当前位置: 首页 > article >正文

【鸿蒙学习】深入了解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的名称、入口、标签等相关信息。
{
  "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被销毁时调用。
    以下是一个简单的生命周期示例:
    在这里插入图片描述
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中配置启动模式:
{
  "module": {
    "abilities": [
      {
        "name": ".MyAbility",
        "launchType": "standard"
      }
    ]
  }
}

基本用法

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

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):

<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应用的关键,希望本文能帮助您更好地入门鸿蒙开发。


http://www.kler.cn/a/328413.html

相关文章:

  • 【期权懂|个股期权中的备兑开仓策略是如何进行的?
  • 独立站干货:WordPress主机推荐
  • 每日OJ题_牛客_天使果冻_递推_C++_Java
  • vue2动态导出多级表头表格
  • 机器学习day5-随机森林和线性代数1最小二乘法
  • 鸿蒙next版开发:拍照实现方案(ArkTS)
  • Java在用增强for循环遍历集合时删除元素,抛出java.util.ConcurrentModificationException异常
  • 【Verilog学习日常】—牛客网刷题—Verilog企业真题—VL69
  • 决策树中联合概率分布公式解释说明
  • 如何判断电器外壳是否带电
  • 十四、磁盘的管理
  • SpringBoot之Profile的两种使用方式
  • 二叉搜索树详解
  • 基于ARX结构的流密码算法Salsa20
  • mybatis-puls快速入门
  • Nginx的核心架构和设计原理
  • EnvoyFilter 是 Istio 中用于直接修改 Envoy 配置的一种资源类型
  • 帝都程序猿十二时辰
  • modelsim仿真 wave视图里 数据位宽和进制怎么显示
  • 通信工程学习:什么是CSMA/CD载波监听多路访问/冲突检测
  • 计算机知识科普问答--25(121-125)
  • 关于KKT条件的线性约束下非线性问题-MATLAB
  • 【机器学习】过拟合与欠拟合——如何优化模型性能
  • wx小程序中,商城订单详情显示还有多少分钟关闭
  • 「C++系列」模板
  • 项目实战:构建高效可扩展的Flask Web框架:集成Flask-SQLAlchemy、Marshmallow与日志管理