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

server/2024/10/20 7:00:58/

文章目录

    • 组件概述
    • 生命周期
    • 启动模式
    • 基本用法

在鸿蒙操作系统(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 {@Overridepublic void onInitialize() {super.onInitialize();// 初始化操作}@Overridepublic void onStart(Intent intent) {super.onStart(intent);// 启动操作}@Overridepublic void onForeground(Intent intent) {super.onForeground(intent);// 前台运行操作}@Overridepublic void onBackground() {super.onBackground();// 后台运行操作}@Overridepublic void onStop() {super.onStop();// 停止操作}@Overridepublic 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 {@Overridepublic 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):

<DirectionalLayoutxmlns:ohos="http://schemas.huawei.com/res/ohos"ohos:height="match_parent"ohos:width="match_parent"ohos:orientation="vertical"><Textohos:id="$+id:text"ohos:height="match_content"ohos:width="match_parent"ohos:text="Hello HarmonyOS!"ohos:text_size="20fp"ohos:padding="20vp"/><Buttonohos: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.ppmy.cn/server/128300.html

相关文章

Vue - 路由用法

前端路由就是URL中的hash与组件之间的对应关系。Vue Router是Vue的官方路由。 组成&#xff1a; VueRouter&#xff1a;路由器类&#xff0c;根据路由请求在路由视图中动态渲染选中的组件。<router-link>&#xff1a;请求链接组件&#xff0c;浏览器会解析成<a>。…

自动驾驶系列—智能驾驶中的“换挡革命”:线控换挡技术详解

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

脉冲神经网络(SNN)论文阅读(六)-----ECCV-2024 脉冲驱动的SNN目标检测框架:SpikeYOLO

原文链接&#xff1a;CSDN-脉冲神经网络&#xff08;SNN&#xff09;论文阅读&#xff08;六&#xff09;-----ECCV-2024 脉冲驱动的SNN目标检测框架&#xff1a;SpikeYOLO Integer-Valued Training and Spike-Driven Inference Spiking Neural Network for High-performance …

在宝塔面板中部署 Express + MongoDB + Uniapp h5 项目(超详细!!!)

文章目录 一、打包 uniapp h5 项目(1) 打开 manifest.json 文件&#xff0c;修改相关配置(2) 开始项目打包 二、修改 express 相关配置(1) 添加打包后的前端资源文件(2) 修改 app.js 文件(3) 修改项目启动命令 三、使用宝塔面板部署项目(1) 宝塔面板安装(2) 项目环境搭建 四、添…

简单介绍Wiki和历史

Wiki 是一种基于网络的协作工具&#xff0c;它允许多个用户创建、编辑和分享信息。Wiki 的特点是页面内容可以由用户自由修改&#xff0c;并且这些修改会立即生效&#xff0c;促进了集体协作和知识共享。Wiki 的本质是一种内容管理系统&#xff0c;支持版本控制&#xff0c;使得…

c++继承(下)

c继承&#xff08;下&#xff09; &#xff08;1&#xff09;继承与友元&#xff08;2&#xff09;继承与静态成员&#xff08;3&#xff09;多继承及其菱形继承问题3.1 继承模型3.2 虚继承3.3 多继承中指针偏移问题 &#xff08;4&#xff09;继承和组合&#xff08;9&#xf…

DolphinScheduler 资源中心无法上传大文件

服务&#xff1a;dolphinscheduler 版本&#xff1a;v3.16 问题描述&#xff1a;资源中心-文件管理中使用文件上传是出现中断或上传失败 排除思路&#xff1a; 测试小文件或其他类型文件时是否正常&#xff1b;F12查看接口调用成功以及失败时的对比&#xff0c;发现接口调用…

2-114 基于matlab的CA模型

基于matlab的CA模型&#xff0c;Singer模型对单机动目标进行跟踪算法&#xff0c;具有10页实验文档。采用蒙特卡罗方法对一个二坐标雷达对一平面上运动的目标进行观测&#xff0c;得到跟踪滤波结果。程序已调通&#xff0c;可直接运行。 下载源程序请点链接&#xff1a;2-114 …