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

【鸿蒙学习】深入了解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 {@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应用的关键,希望本文能帮助您更好地入门鸿蒙开发。

相关文章:

  • 关系型数据库和非关系型数据库的区别
  • JavaScript 反射(Reflect)和代理(Proxy)简单介绍
  • OLED移植
  • expressjs 中的mysql.createConnection,execute 怎么使用
  • MacOS配置python环境
  • Linux安装RabbitMQ安装
  • Ubuntu如何如何安装tcpdump
  • 微信小程序操作蓝牙
  • vue3 环境配置vue-i8n国际化
  • 当人工智能拥抱餐饮业,传统与创新的交融
  • 每天五分钟深度学习pytorch:基于pytorch搭建一元线性回归模型
  • 【EXCEL数据处理】000010 案列 EXCEL文本型和常规型转换。使用的软件是微软的Excel操作的。处理数据的目的是让数据更直观的显示出来,方便查看。
  • 【AIGC】ChatGPT提示词解析:如何打造个人IP、CSDN爆款技术文案与高效教案设计
  • 【web安全】——sql注入
  • 查缺补漏----该不该考虑不可屏蔽中断
  • 深入了解以太坊
  • php的引用
  • 「面试题」如何实现一个圣杯布局?
  • Android交互
  • egg(89)--egg之redis的发布和订阅
  • fetch 从初识到应用
  • httpie使用详解
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • Java方法详解
  • js对象的深浅拷贝
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • Python socket服务器端、客户端传送信息
  • Python连接Oracle
  • Theano - 导数
  • 编写高质量JavaScript代码之并发
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 前端知识点整理(待续)
  • 区块链共识机制优缺点对比都是什么
  • 日剧·日综资源集合(建议收藏)
  • 微信小程序实战练习(仿五洲到家微信版)
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 说说我为什么看好Spring Cloud Alibaba
  • ‌[AI问答] Auto-sklearn‌ 与 scikit-learn 区别
  • #systemverilog# 之 event region 和 timeslot 仿真调度(十)高层次视角看仿真调度事件的发生
  • (LeetCode 49)Anagrams
  • (PySpark)RDD实验实战——求商品销量排行
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (转)linux 命令大全
  • (轉貼) UML中文FAQ (OO) (UML)
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .NET Core跨平台微服务学习资源
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .net mvc actionresult 返回字符串_.NET架构师知识普及