鸿蒙页面和组件生命周期
本文介绍了HarmonyOS中页面和组件的生命周期管理机制。页面生命周期包括onPageShow(显示)、onPageHide(隐藏)、onBackPress(返回)等回调;组件生命周期包含aboutToAppear(出现前)、aboutToDisappear(销毁前)等接口。带@Entry的页面组件同时具备页面和组件的生命周期特性。文章还说明了UIAbility的生命周期状态(Create/Fo
页面生命周期、组件生命周期
- 自定义组件:@Component装饰的UI单元,可以组合多个系统组件实现UI的复用。
- 页面:即应用的UI页面。可以由一个或者多个自定义组件组成,@Entry装饰的自定义组件为页面的入口组件,即页面的根节点,一个页面有且仅能有一个@Entry。只有被@Entry装饰的组件才可以调用页面的生命周期。
带@Entry修饰符的组件
页面生命周期,即被@Entry装饰的组件生命周期,提供以下生命周期接口:
- onPageShow:页面每次显示时触发。
- onPageHide:页面每次隐藏时触发一次。
- onBackPress:当用户点击返回按钮时触发。
自定义组件生命周期
组件生命周期,即一般用@Component装饰的自定义组件的生命周期,提供以下生命周期接口:
- aboutToAppear:组件即将出现时回调该接口,具体时机为在创建自定义组件的新实例后,在执行其build()函数之前执行。
- aboutToDisappear:在自定义组件即将析构销毁时执行。
- onDidBuild(API12新增):onDidBuild函数在执行自定义组件的build()函数之后执行。不建议在onDidBuild函数中更改状态变量、使用animateTo等功能,这可能会导致不稳定的UI表现。
因为@Entry 也是@Component组件,所以页面组件同时拥有自定义组件的生命周期

aboutToAppear() {
console.log("页面初始化")
}
onPageShow() {
console.log("页面显示")
}
onPageHide() {
console.log("页面隐藏")
}
aboutToDisappear() {
// 清理定时器
console.log("页面销毁")
}
onBackPress() {
console.log("后退键")
}
aboutToAppear:数据加载
onPageShow:也可以数据加载(具有时效性的业务)
aboutToDisAppear:清理定时任务 。清理监听-线程监听-进程监听

- 带@Entry的页面组件 拥有页面进入,页面销毁,页面显示,页面隐藏, 页面返回的生命周期
- @Component自定义组件 拥有 组件进入、组件销毁生命周期
- 在返回页面中,可以进行处理控制是否返回
在onBackPress中
return true 表示阻止返回
return false 表示允许返回
在返回时控制返回
-
onBackPress() { promptAction.showDialog({ message: '确定要退出吗', buttons: [{ text: '取消', color: "black" },{ text: '确定', color: "black" }], }) .then((result) => { if(result.index === 1) { router.back() } }) return true }先手动让页面不返回,然后再确定是否要返回,如果确定要返回,就用router.back来实现
UIAbility-生命周期
UIAbility的生命周期包括Create、Foreground、Background、Destroy四个状态,如下图所示。

- onCreate
-
Ability创建时回调,执行初始化业务逻辑操作。
- onDestory
-
Ability生命周期回调,在销毁时回调,执行资源清理等操作。
- onWindowStageCreate
-
当WindowStage创建后调用。
- onWindowStageDestory
-
当WindowStage销毁后调用。
- onForeground
-
Ability生命周期回调,当应用从后台转到前台时触发。
- onBackground
-
Ability生命周期回调,当应用从前台转到后台时触发
- HarmonyOS赋能资源丰富度建设(第四期)-吴东林https://developer.huawei.com/consumer/cn/training/classDetail/9fdeeb1a35d64d2fabad3948ae7aab72?type=1?ha_source=hmosclass&ha_sourceId=89000248
更多推荐


所有评论(0)