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

news/2024/12/21 13:15:26/

文章目录

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

在鸿蒙操作系统(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/news/1533947.html

相关文章

【Android】Jetpack组件之LifeCycle

引言 Lifecycle组件是Android Jetpack架构组件之一&#xff0c;它提供了一种方法来管理Android组件&#xff08;如Activity、Fragment和服务&#xff09;的生命周期。Lifecycle组件帮助你执行与生命周期相关联的操作&#xff0c;确保在适当的时间发生适当的事情&#xff0c;例…

STM32中断控制点灯

1.使能GPIO时钟&#xff1a; __HAL_RCC_GPIOA_CLK_ENABLE(); //使能GPIOA时钟 2.设置GPIO输入模式 2.1设置AFIO&#xff08;开启时钟&#xff0c;IO口映射&#xff09; 2.2设置EXTI&#xff08;屏蔽&#xff0c;上/下沿&#xff09; 第二项使用 HAL_GPIO_Init &#xff0c;…

Linux下的驱动开发一

设备驱动 设备驱动程序&#xff08;Device Driver&#xff09;是操作系统中的一种软件组件&#xff0c;负责管理和控制计算机硬件设备的工作。驱动程序通过提供操作系统和硬件设备之间的接口&#xff0c;使得操作系统和应用程序能够与硬件设备进行交互&#xff0c;而无需了解硬…

Elasticsearch基础_5.ES聚合功能

文章目录 一、数据聚合1.1、桶聚合1.1.1、单维度桶聚合1.1.2、聚合结果排序1.1.3、限定聚合范围 1.2、Metric聚合 二、聚合总结 本文只记录ES聚合基本用法&#xff0c;后续有更复杂的需求可以查看相关书籍&#xff0c;如《Elasticsearch搜索引擎构建入门与实战》 一、数据聚合…

Spring Boot+VUE《班级综合测评管理系统》

文章目录 前言 一、总体设计 二、数据库设计 概念模型设计: 教师管理实体图所示&#xff1a; 三、系统功能的详细设计与实现 1 管理员功能模块 2学生功能模块 3教师功能模块 四、资源下载链接 前言 本课题在充分研究了在Springboot框架基础上&#xff0c;采用B/S模式&#xff0…

15分钟学 Python 第34天 :小项目-个人博客网站

Day 34: 小项目-个人博客网站 1. 引言 随着互联网的普及&#xff0c;个人博客已成为分享知识、体验和见解的一个重要平台。在这一节中&#xff0c;我们将使用Python的Flask框架构建一个简单的个人博客网站。我们将通过实际的项目来学习如何搭建Web应用、处理用户输入以及管理…

小程序-使用npm包

目录 Vant Weapp 安装 Vant 组件库 使用 Vant 组件 定制全局主题样式 API Promise化 1. 基于回调函数的异步 API 的缺点 2. 什么是 API Promise 化 3. 实现 API Promise 化 4.调用 Promise 化之后的异步 API 小程序对 npm 的支持与限制 目前&#xff0c;小程序中已经…

云计算SLA响应时间的matlab模拟与仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 用matlab模拟&#xff0c;一个排队理论。输入一堆包&#xff0c;经过buffer&#xff08;一个或者几个都行&#xff09;传给server&#xff0c;这些包会在buffer里…