生命周期,就是从页面启动到界面显示过程中 或者 应用启动的过程中 需要调用的周期函数,这些都是自动调用的,可以通过生命周期的每个阶段来显示或者获取需要的信息,比如请求数据、数据传递、刷新页面等等。
生命周期包括:1,应用,生命周期,2,页面也生命周期,3,组件或自定义组件生命周期。
应用生命周期
当用户打开、切换和返回到对应应用时,应用中的UIAbility实例会在其生命周期的不同状态之间转换。
UIAbility类提供了一系列回调,通过这些回调可以知道当前UIAbility实例的某个状态发生改变,会经过UIAbility实例的创建和销毁,或者UIAbility实例发生了前后台的状态切换。
生命周期包括Create、Foreground、Background、Destroy四个状态,如下图所示。
uiAbility 生命周期状态详细说明
1、Create状态为在应用加载过程中,UIAbility实例创建完成时触发,系统会调用onCreate()回调。可以在该回调中进行页面初始化操作,例如变量定义资源加载等,用于后续的UI展示。
2、UIAbility实例创建完成之后,在进入Foreground之前,系统会创建一个WindowStage。WindowStage创建完成后会进入onWindowStageCreate()回调,可以在该回调中设置UI加载、设置WindowStage的事件订阅。
在onWindowStageCreate()回调中通过loadContent()方法设置应用要加载的页面,并根据需要调用on(‘windowStageEvent’)方法订阅WindowStage的事件(获焦/失焦、可见/不可见)
3、onForeground()回调,在UIAbility的UI可见之前,如UIAbility切换至前台时触发。可以在onForeground()回调中申请系统需要的资源,或者重新申请在onBackground()中释放的资源
4、onBackground()回调,在UIAbility的UI完全不可见之后,如UIAbility切换至后台时候触发。可以在onBackground()回调中释放UI不可见时无用的资源,或者在此回调中执行较为耗时的操作,例如状态保存等
5、在UIAbility实例销毁之前,进入onWindowStageDestroy()回调
6、Destroy状态在UIAbility实例销毁时触发。可以在onDestroy()回调中进行系统资源的释放、数据的保存等操作
页面生命周期
页面生命周期,即被@Entry装饰的组件生命周期,提供以下生命周期接口:
onPageShow:页面每次显示时触发一次,包括路由过程、应用进入前台等场景,仅@Entry装饰的自定义组件生效。
onPageHide:页面每次隐藏时触发一次,包括路由过程、应用进入后台等场景,仅@Entry装饰的自定义组件生效。
onBackPress:当用户点击返回按钮时触发,仅@Entry装饰的自定义组件生效。
组件生命周期
组件生命周期,即一般用@Component装饰的自定义组件(包括页面)的生命周期,如下图:
aboutToAppear:组件即将出现时回调该接口,具体时机为在创建自定义组件的新实例后,在执行其build()函数之前执行。
aboutToDisappear:aboutToDisappear函数在自定义组件析构销毁之前执行。不允许在aboutToDisappear函数中改变状态变量,特别是@Link变量的修改可能会导致应用程序行为不稳定。
注意:onPageShow、onPageHide、onBackPress三个生命周期,只有在页面中(存在@Entry组件)才能生效,比如子组件中不生效。
除了上述三个生命周期,其他生命周期(aboutToAppear、onDidBuild、onBackPress、aboutToDisappear)在组件和页面中都存在并可以使用。
生命周期实战代码:https://juejin.cn/post/7369443744750190643
本文部分转载自:https://blog.csdn.net/2401_82546228/article/details/138573470