织梦cms网站迁移,公司网站备案好处,网络公司基础建设,民族服装的网站建设介绍
本文档主要描述了应用运行过程中UIAbility和自定义组件的生命周期。对于UIAbility#xff0c;描述了Create、Foreground、Background、Destroy四种生命周期。对于页面和自定义组件描述了aboutToAppear、onPageShow、onPageHide、onBackPress、aboutToDisappear五种生命周…介绍
本文档主要描述了应用运行过程中UIAbility和自定义组件的生命周期。对于UIAbility描述了Create、Foreground、Background、Destroy四种生命周期。对于页面和自定义组件描述了aboutToAppear、onPageShow、onPageHide、onBackPress、aboutToDisappear五种生命周期。
相关概念
UIAbilityUIAbility是包含UI界面的应用组件提供组件创建、销毁、前后台切换等生命周期回调同时也具备组件协同的能力。自定义组件的生命周期自定义组件的生命周期回调函数用于通知用户该自定义组件的生命周期这些回调函数是私有的在运行时由开发框架在特定的时间进行调用不能从应用程序中手动调用这些回调函数。窗口开发指导窗口模块用于在同一块物理屏幕上提供多个应用界面显示、交互的机制。
环境搭建
软件要求
DevEco Studio版本DevEco Studio 3.1 Release。OpenHarmony SDK版本API version 9。
硬件要求
开发板类型润和RK3568开发板。OpenHarmony系统3.2 Release。
环境搭建
完成本篇Codelab我们首先要完成开发环境的搭建本示例以RK3568开发板为例参照以下步骤进行
获取OpenHarmony系统版本标准系统解决方案二进制。以3.2 Release版本为例 2.搭建烧录环境。
完成DevEco Device Tool的安装完成RK3568开发板的烧录
3.搭建开发环境。
开始前请参考工具准备完成DevEco Studio的安装和开发环境配置。开发环境配置完成后请参考使用工程向导创建工程模板选择“Empty Ability”。工程创建完成后选择使用真机进行调测。
代码结构解读
本篇Codelab只对核心代码进行讲解。
├──entry/src/main/ets // 代码区
│ ├──common
│ │ ├──constants
│ │ │ └──CommonConstants.ets // 公共常量类
│ │ └──util
│ │ └──Logger.ets // 日志管理工具类
│ ├──entryability
│ │ └──EntryAbility.ts // 程序入口类
│ └──pages
│ └──LifeCyclePage.ets // 跳转页
└──entry/src/main/resources // 资源文件目录
UIAbility生命周期
当用户打开、切换和返回到应用时UIAbility实例会在其生命周期的不同状态之间转换。UIAbility类提供了一系列回调通过这些回调可以知道当前UIAbility实例的某个状态发生改变UIAbility实例的创建和销毁或者UIAbility实例发生了前后台的状态切换。Create、Foreground、Background、Destroy四个状态如图所示 Create状态在应用首次创建UIAbility实例时触发此时系统会调用onCreate()回调。可以在该回调中进行应用初始化操作例如变量定义资源加载等用于后续的UI界面展示。
// EntryAbility.ts
import UIAbility from ohos.app.ability.UIAbility;
import Window from ohos.window;export default class EntryAbility extends UIAbility {...onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {// 初始化应用...}...
}
WindowStageCreate和WindowStageDestory状态UIAbility实例创建完成之后在进入Foreground之前系统会创建一个WindowStage。WindowStage创建完成后会进入onWindowStageCreate()回调可以在该回调中设置UI界面加载、设置WindowStage的事件订阅。 在onWindowStageCreate()回调中通过loadContent()方法设置应用要加载的页面并根据需要调用on(windowStageEvent)方法订阅WindowStage的事件获焦/失焦、可见/不可见。
// EntryAbility.ts
import UIAbility from ohos.app.ability.UIAbility;
import window from ohos.window;export default class EntryAbility extends UIAbility {...onWindowStageCreate(windowStage: window.WindowStage): void {this.windowStage windowStage;// 设置WindowStage事件订阅获取/失焦、可见/不可见try {windowStage.on(windowStageEvent, (data) {hilog.info(this.domain,Succeeded in enabling the listener for window stage event changes. Data: %{public},JSON.stringify(data) ?? );});} catch (exception) {hilog.error(this.domain,Failed to enable the listener for window stage event changes. Cause: %{public},JSON.stringify(exception) ?? );}// 设置UI加载windowStage.loadContent(pages/LifeCyclePage, (err, data) {...});}
}
Foreground和Background状态
Foreground和Background状态分别在UIAbility实例切换至前台和切换至后台时触发对应于onForeground()回调和onBackground()回调。
onForeground()回调在UIAbility的UI界面可见之前如UIAbility切换至前台时触发。可以在onForeground()回调中申请系统需要的资源或者重新申请在onBackground()中释放的资源。onBackground()回调在UIAbility的UI界面完全不可见之后如UIAbility切换至后台时触发。可以在onBackground()回调中释放UI界面不可见时无用的资源或者在此回调中执行较为耗时的操作例如状态保存等。
例如应用在使用过程中需要使用用户定位时假设应用已获得用户的定位权限授权。在UI界面显示之前可以在onForeground()回调中开启定位功能从而获取到当前的位置信息。
当应用切换到后台状态可以在onBackground()回调中停止定位功能以节省系统的资源消耗。
// EntryAbility.ts
import UIAbility from ohos.app.ability.UIAbility;export default class EntryAbility extends UIAbility {...onForeground(): void {// 申请系统所需的资源或在onBackground中申请释放的资源}onBackground(): void {// UI不可见时释放无用资源或在此回调中执行耗时操作// 例如状态保存}
}
Destory状态
Destroy状态在UIAbility实例销毁时触发。可以在onDestroy()回调中进行系统资源的释放、数据的保存等操作。
例如调用terminateSelf()方法停止当前UIAbility实例从而完成UIAbility实例的销毁或者用户使用最近任务列表关闭该UIAbility实例完成UIAbility的销毁。
// EntryAbility.ts
import UIAbility from ohos.app.ability.UIAbility;
import Window from ohos.window;export default class EntryAbility extends UIAbility {...onDestroy(): void | Promisevoid {// 释放系统资源保存数据}
}
自定义组件生命周期
自定义组件的生命周期回调函数用于通知用户该自定义组件的生命周期这些回调函数是私有的在运行时由开发框架在特定的时间进行调用不能从应用程序中手动调用这些回调函数。 说明 允许在生命周期函数中使用Promise和异步回调函数比如网络资源获取定时器设置等。 自定义组件的生命周期包括aboutToAppear、onPageShow、onPageHide、onBackPress、aboutToDisappear五种状态如图所示 aboutToAppear
aboutToAppear?(): void
aboutToAppear函数在创建自定义组件的新实例后在执行其build()函数之前执行。允许在aboutToAppear函数中改变状态变量更改将在后续执行build()函数中生效。
aboutToDisappear
aboutToDisappear?(): void
aboutToDisappear函数在自定义组件析构销毁之前执行。不允许在aboutToDisappear函数中改变状态变量特别是Link变量的修改可能会导致应用程序行为不稳定。
onPageShow
onPageShow?(): void
页面每次显示时触发一次包括路由过程、应用进入前后台等场景仅**Entry**修饰的自定义组件生效。
onPageHide
onPageHide?(): void
页面每次隐藏时触发一次包括路由过程、应用进入前后台等场景仅**Entry**修饰的自定义组件生效。
onBackPress
onBackPress?(): void
当用户点击返回按钮时触发仅**Entry**装饰的自定义组件生效。
// LifeCyclePage.ets
Entry
Component
struct LifeCyclePage {State textColor: Color Color.Black;aboutToAppear() {this.textColor Color.Blue;Logger.info([LifeCyclePage] LifeCyclePage aboutToAppear);}onPageShow() {this.textColor Color.Brown;Logger.info([LifeCyclePage] LifeCyclePage onPageShow);}onPageHide() {Logger.info([LifeCyclePage] LifeCyclePage onPageHide);}onBackPress() {this.textColor Color.Red;Logger.info([LifeCyclePage] LifeCyclePage onBackPress);return false;}aboutToDisappear() {Logger.info([LifeCyclePage] LifeCyclePage aboutToDisappear);}build() {Column() {Text($r(app.string.hello_message)).fontSize(CommonConstants.DEFAULT_FONT_SIZE).fontColor(this.textColor).margin(CommonConstants.DEFAULT_MARGIN).fontWeight(FontWeight.Bold)}.width(CommonConstants.FULL_WIDTH)}
}
总结
您已经完成了本次Codelab的学习并了解到以下知识点
UIAbility生命周期。自定义组件生命周期。
为了帮助大家更深入有效的学习到鸿蒙开发知识点小编特意给大家准备了一份全套最新版的HarmonyOS NEXT学习资源获取完整版方式请点击→《HarmonyOS教学视频》
HarmonyOS教学视频语法ArkTS、TypeScript、ArkUI等…视频教程 鸿蒙生态应用开发白皮书V2.0PDF
获取完整版白皮书方式请点击→《鸿蒙生态应用开发白皮书V2.0PDF》 鸿蒙 (Harmony OS)开发学习手册
一、入门必看
应用开发导读(ArkTS).…… 二、HarmonyOS 概念
系统定义技术架构技术特性系统安全… 三、如何快速入门《鸿蒙基础入门学习指南》
基本概念构建第一个ArkTS应用.…… 四、开发基础知识
应用基础知识配置文件应用数据管理应用安全管理应用隐私保护三方应用调用管控机制资源分类与访问学习ArkTS语言.…… 五、基于ArkTS 开发
Ability开发UI开发公共事件与通知窗口管理媒体安全7.网络与链接电话服务数据管理后台任务(Background Task)管理设备管理设备使用信息统计DFX国际化开发折叠屏系列.…… 更多了解更多鸿蒙开发的相关知识可以参考《鸿蒙 (Harmony OS)开发学习手册》