【鸿蒙学习】深入了解UIAbility组件

文章目录

在鸿蒙操作系统(HarmonyOS)的开发过程中,UIAbility组件是构建应用界面的关键。本文将带您了解UIAbility组件的概述、生命周期、启动模式以及基本用法,并通过代码示例帮助您更好地掌握这一组件。

组件概述

UIAbility是HarmonyOS应用开发中的一个重要组件,用于处理用户界面交互。它类似于Android中的Activity和iOS中的ViewController。UIAbility提供了丰富的UI控件,开发者可以通过这些控件构建出美观、易用的应用界面。

UIAbility组件是系统调度的基本单元,为应用提供绘制界面的窗口。一个应用可以包含一个或多个UIAbility组件。例如,在支付应用中,可以将入口功能和收付款功能分别配置为独立的UIAbility。

每一个UIAbility组件实例都会在最近任务列表中显示一个对应的任务。

UIAbility组件具有以下特点:

  • 提供页面导航、布局、事件处理等功能。
  • 支持多种布局方式,如DirectionalLayout、DependentLayout等。
  • 支持自定义UI控件。
    声明配置
    为使应用能够正常使用UIAbility,需要在module.json5配置文件的abilities标签中声明UIAbility的名称、入口、标签等相关信息。
java 复制代码
{
  "module": {
    "name": "entry",
    "type": "entry",
    "description": "$string:module_desc",
    "mainElement": "EntryAbility",
    "deviceTypes": [
      "phone",
      "tablet"
    ],
    "deliveryWithInstall": true,
    "installationFree": false,
    "pages": "$profile:main_pages",
    "abilities": [
      {
        "name": "EntryAbility",
        "srcEntry": "./ets/entryability/EntryAbility.ets",
        "description": "$string:EntryAbility_desc",
        "icon": "$media:icon_bak",
        "label": "$string:EntryAbility_label",
        "startWindowIcon": "$media:icon_bak",
        "startWindowBackground": "$color:start_window_background",
        "exported": true,
        "skills": [
          {
            "entities": [
              "entity.system.home"
            ],
            "actions": [
              "action.system.home"
            ]
          }
        ]
      }
    ]
  }
}

生命周期

官网地址:生命周期状态说明

UIAbility组件的生命周期包括以下几个状态:

  1. ** 初始化(UIAbility Start)**:在Ability被创建时调用,用于初始化Ability。
  2. ** 启动(create)**:在Ability可见时调用。
  3. 前台运行(Foreground):在Ability进入前台时调用。
  4. 后台运行(Background):在Ability进入后台时调用。
  5. 销毁(onDestroy) :在Ability被销毁时调用。
    以下是一个简单的生命周期示例:
java 复制代码
public class MyAbility extends Ability {
    @Override
    public void onInitialize() {
        super.onInitialize();
        // 初始化操作
    }
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        // 启动操作
    }
    @Override
    public void onForeground(Intent intent) {
        super.onForeground(intent);
        // 前台运行操作
    }
    @Override
    public void onBackground() {
        super.onBackground();
        // 后台运行操作
    }
    @Override
    public void onStop() {
        super.onStop();
        // 停止操作
    }
    @Override
    public void onDestroy() {
        super.onDestroy();
        // 销毁操作
    }
}

启动模式

UIAbility支持以下启动模式:

  1. 标准模式(Standard):每次启动都会创建一个新的实例。
  2. 单例模式(Singleton):整个应用生命周期内只创建一个实例。
  3. 栈顶复用模式(SingleInstance) :如果栈顶存在实例,则复用该实例,否则创建新实例。
    在config.json中配置启动模式:
json 复制代码
{
  "module": {
    "abilities": [
      {
        "name": ".MyAbility",
        "launchType": "standard"
      }
    ]
  }
}

基本用法

以下是一个简单的UIAbility组件用法示例,创建一个包含文本和按钮的页面:

java 复制代码
public class MyAbility extends Ability {
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_my);
        // 查找组件
        Text text = (Text) findComponentById(ResourceTable.Id_text);
        Button button = (Button) findComponentById(ResourceTable.Id_button);
        // 设置文本
        text.setText("Hello HarmonyOS!");
        // 设置按钮点击事件
        button.setClickedListener(component -> {
            text.setText("Button clicked!");
        });
    }
}

对应的布局文件(ability_my.xml):

xml 复制代码
<DirectionalLayout
    xmlns:ohos="http://schemas.huawei.com/res/ohos"
    ohos:height="match_parent"
    ohos:width="match_parent"
    ohos:orientation="vertical">
    <Text
        ohos:id="$+id:text"
        ohos:height="match_content"
        ohos:width="match_parent"
        ohos:text="Hello HarmonyOS!"
        ohos:text_size="20fp"
        ohos:padding="20vp"/>
    <Button
        ohos:id="$+id:button"
        ohos:height="match_content"
        ohos:width="match_content"
        ohos:text="Click Me"
        ohos:text_size="20fp"
        ohos:padding="20vp"/>
</DirectionalLayout>

通过以上示例,您已经了解了如何在HarmonyOS应用中使用UIAbility组件构建界面。掌握UIAbility组件是开发HarmonyOS应用的关键,希望本文能帮助您更好地入门鸿蒙开发。

相关推荐
2501_9197490322 分钟前
华为鸿蒙免费排班APP—小羊排班
华为·harmonyos·鸿蒙
xqqxqxxq1 小时前
AI Agent学习:打通真实世界:Agent 工具分类与设计原则(李博杰《深入理解 AI Agent》4.1 4.2观后总结)
学习·ai
TJHHH.1 小时前
SQL注入学习总结
数据库·笔记·sql·学习·注入
m4Rk_1 小时前
【论文阅读】Agent 记忆机制(43):Mem²Evolve——让经验与能力在双记忆中共同进化
论文阅读·人工智能·学习·开源·github
大雷神1 小时前
相册照片不用上传:HarmonyOS Core Vision 端侧识别动物与植物
harmonyos
个 人 练 习 生2 小时前
数据结构入门:算法复杂度
开发语言·数据结构·经验分享·学习·程序人生·算法
ι:2 小时前
DeepSeek Harness 桌面一键启动与网页背景修改指南
windows·学习·deepseekharness
OH_TPC2 小时前
HarmonyOS APP开发---"刷刷"短视频App,需要用到这个库
harmonyos
其实防守也摸鱼2 小时前
红队技能总结导图:从入门到精通的完整知识体系
开发语言·人工智能·学习·安全·web安全
zjnlswd2 小时前
C# 学习笔记
笔记·学习