鸿蒙ArkUI相关的生命周期都有哪些?
1. UIAbility生命周期
onCreate
、onWindowStageCreate
、onForeground
、onBackground
、onWindowStageDestroy
、onDestroy
。
-
onCreate:Create状态为在应用加载过程中,UIAbility实例创建完成时触发,系统会调用onCreate()回调。可以在该回调中进行页面初始化操作,例如变量定义资源加载等,用于后续的UI展示。
-
onWindowStageCreate():UIAbility实例创建完成之后,在进入Foreground之前,系统会创建一个WindowStage。WindowStage创建完成后会进入onWindowStageCreate()回调,可以在该回调中设置UI加载、设置WindowStage的事件订阅。
-
onForegound():在UIAbility的UI可见之前,如UIAbility切换至前台时触发。可以在onForeground()回调中申请系统需要的资源,或者重新申请在onBackground()中释放的资源。
-
onWindowStageDestory():在UIAbility实例销毁之前,则会先进入onWindowStageDestroy()回调,可以在该回调中释放UI资源。
-
onBackground():在UIAbility的UI完全不可见之后,如UIAbility切换至后台时候触发。可以在onBackground()回调中释放UI不可见时无用的资源,或者在此回调中执行较为耗时的操作,例如状态保存等。
-
onWindowStageDestory():在UIAbility实例销毁之前,则会先进入onWindowStageDestroy()回调,可以在该回调中释放UI资源。
-
onDestroy():Destroy状态在UIAbility实例销毁时触发。可以在onDestroy()回调中进行系统资源的释放、数据的保存等操作。
2. 页面生命周期:
onPageShow
、onPageHide
、nBackPress
(页面是特殊组件,本身也是组件,包含了所有组件的生命周期函数)。
页面生命周期,说白了就是@Entry
修饰的组件,才称之为页面。
-
onPageShow:页面每次显示时触发一次,包括路由过程、应用进入前台等场景,仅@Entry装饰的自定义组件生效。
-
onPageHide:页面每次隐藏时触发一次,包括路由过程、应用进入后台等场景,仅@Entry装饰的自定义组件生效。
-
onBackPress:当用户点击返回按钮时触发,仅@Entry装饰的自定义组件生效。
3. 组件生命周期:
aboutToAppear
、aboutToDisappear
、aboutToReusable
API10+、aboutToRecycle
API10+。
-
aboutToAppear:在创建自定义组件的新实例后,在执行其build()函数之前执行。允许在aboutToAppear函数中改变状态变量,更改将在后续执行build()函数中生效。
-
aboutToDisappear:函数在自定义组件销毁之前执行。不允许在aboutToDisappear函数中改变状态变量,特别是@Link变量的修改可能会导致应用程序行为不稳定。
(2个扩展,API10后面新增的组件复用,感兴趣参考上一篇文章【最新鸿蒙应用开发】——组件生命周期(声明式开发范式)-CSDN博客)
组件复用
生命周期API10+:
-
aboutToReuse:复用组件从复用缓存中加入到组件树之前调用
-
aboutToRecycle:复用组件从组件树上卸载进入复用缓存之前调用
注意点:
如果是跳转的话会触发aboutToAppear
和onPageShow
,要是返回的话aboutToAppear
是不触发的,只会触发onPageShow
。
跳转到另一个页面:
-
打开第一个页面:
-
Index:aboutToAppear
-
Index:onPageShow
-
-
跳转第二个页面:
-
Index:onPageHide
-
Second:aboutToAppear
-
Second:onPageShow
-
如果是点击back的话:
-
Second:onBackPress
-
Second:onPageHide
-
Index:onPageShow
-
Second:aboutToDisappear
如果是在第二个页面跳转到第一个页面:
-
Index:aboutToAppear
-
Index:onPageShow
-
Second:onPageHide
aboutToAppear和onAppear的区别?
-
aboutToAppear:是组件的生命周期方法,当组件实例创建后,执行build函数之前执行aboutToAppear
-
onAppear:是组件的属性方法,在该组件显示时触发此回调
Text()
.onAppear(()=>{}
4. 综上所述:
生命周期钩子,一共是6+3+2(+2)个,具体如下:
UIAbility生命周期钩子(6个):
-
onCreate
: 应用创建时调用。 -
onDestroy
: 应用销毁时调用。 -
onWindowStageCreate
: WindowStage创建时调用。 -
onWindowStageDestroy
: WindowStage销毁时调用。 -
onForeground
: 应用进入前台时调用。 -
onBackground
: 应用进入后台时调用。
页面组件生命周期钩子(5个):
-
aboutToAppear
: 页面创建时调用。 -
aboutToDisappear
: 页面销毁时调用。 -
onPageShow
: 页面准备展示时调用。(页面特有) -
onPageHide
: 页面完全隐藏时调用。(页面特有) -
onBackPress
: 用户返回操作时调用。(页面特有)
组件复用生命周期钩子(2个扩展)API10+:
-
aboutToReuse
:复用组件从复用缓存中加入到组件树之前调用 -
aboutToRecycle
:复用组件从组件树上卸载进入复用缓存之前调用