不同颜色的是必须要会的,黑色的参考一下,只写了一些用过的还有很多组件的生命周期都没写
组件的生命周期有那些?
我了解的有、系统组件的生命周期、页面和自定义组件的生命周期、UIAbility组件的生命周期,Navigation组件生命周期,Web组件生命周期。
就是面试官问你这个问题我们应该怎么答?
我们是一口气把所有的生命周期都说出来,还是按照总分结构说出来?
我会把我认为重要的用不同颜色标注出来
系统组件生命周期
onAppear:组件卸载消失时触发此回调。
onDisAppear:组件挂载显示后触发此回调。
onAttach:组件挂载至组件树时触发此回调。
onDetach:组件从组件树卸载时触发此回调。
不太清楚后面两个算不算生命周期里面的钩子函数,我参考了一个文献,把onAppear和
onDisAppear放在了系统组件生命周期里面。然后这个两个也在同级目录里面。所以也加上来了。按照生命周期的定义来说应该算是 ,如果有误请评论区说一下。谢谢
**生命周期的定义:**即它是描述组件从创建到销毁整个过程中所经历的不同阶段,每个阶段都有相应的回调函数可供开发者使用,以实现诸如初始化数据、更新界面、释放资源等操作,确保组件在应用中能正确且高效地运行。
页面和自定义组件的生命周期
在开始之前,我们先明确自定义组件和页面的关系:
-
自定义组件:@Component装饰的UI单元,可以组合多个系统组件实现UI的复用,可以调用组件的生命周期。
-
页面:即应用的UI页面。可以由一个或者多个自定义组件组成,@Entry装饰的自定义组件为页面的入口组件,即页面的根节点,一个页面有且仅能有一个@Entry。只有被@Entry装饰的组件才可以调用页面的生命周期。
页面生命周期,即被@Entry装饰的组件生命周期,提供以下生命周期接口:
onPageShow:页面每次显示时触发一次,包括路由过程、应用进入前台等场景,仅@Entry装饰的自定义组件生效。
onPageHide:页面每次隐藏时触发一次,包括路由过程、应用进入后台等场景,仅@Entry装饰的自定义组件生效。
onBackPress:当用户点击返回按钮时触发,仅@Entry装饰的自定义组件生效。
组件生命周期,即一般用@Component装饰的自定义组件的生命周期,提供以下生命周期接口:
aboutToAppear:aboutToAppear函数在创建自定义组件的新实例后,在执行其build()函数之前执行。
onDidBuild:onDidBuild函数在执行自定义组件的build()函数之后执行。
aboutToDisappear:aboutToDisappear函数在自定义组件析构销毁时执行。
@Entry装饰的组件(页面)生命周期。
aboutToReuse: 当一个可复用的自定义组件从复用缓存中重新加入到节点树时,触发aboutToReuse生命周期回调,并将组件的构造参数传递给aboutToReuse。
aboutToRecycle:组件的生命周期回调,在可复用组件从组件树上被加入到复用缓存之前调用。
onWillApplyTheme:用于获取当前组件上下文的Theme对象,在创建自定义组件的新实例后,在执行其build()函数之前执行。
UIAbility组件的生命周期
UIAbility的生命周期包括Create、Foreground、Background、Destroy四个状态,如下图所示。
onCreate:UIAbility实例处于完全关闭状态下被创建完成后进入该生命周期回调,执行初始化业务逻辑操作。
onDestroy:UIAbility生命周期回调,在销毁时回调,执行资源清理等操作。
onForeground:UIAbility生命周期回调,当应用从后台转到前台时触发。
onBackground:UIAbility生命周期回调,当应用从前台转到后台时触发。
WindowStageCreate和WindowStageDestroy状态
onWindowStageCreat:当WindowStage创建后调用。
onWindowStageWillDestroy:当WindowStage即将销毁时调用。
onWindowStageDestroy:当WindowStage销毁后调用。
onWindowStageRestore: 当迁移多实例ability时,恢复WindowStage后调用。
onContinue:当Ability准备迁移时触发,保存数据。
onNewWant:UIAbility实例已经启动并在前台运行过,由于某些原因切换到后台,再次启动该UIAbility实例时会回调执行该方法。
onDump:转储客户端信息时调用,可用于转储非敏感信息。
onSaveState:该API配合appRecovery使用。在应用故障时,如果使能了自动保存状态,框架将回调onSaveState保存UIAbility状态。
onShare :在跨端分享场景下,在UIAbility中设置分享方设备要分享的数据。
onPrepareToTerminate:UIAbility生命周期回调,当系统预关闭开关打开后(配置系统参数persist.sys.prepare_terminate为true打开),在UIAbility关闭时触发,可在回调中定义操作来决定是否继续执行关闭UIAbility的操作。如果UIAbility在退出时需要与用户交互确认是否关闭UIAbility,可在此生命周期回调中定义预关闭操作配合terminateSelf接口退出,如弹窗确认是否关闭,并配置预关闭生命周期返回true取消正常关闭。
onBackPressed:UIAbility生命周期回调,当UIAbility侧滑返回时触发,根据返回值决定是否销毁UIAbility。
Navigation组件生命周期
Navigation作为路由容器,其生命周期承载在NavDestination组件上,以组件事件的形式开放。
其生命周期大致可分为三类,自定义组件生命周期、通用组件生命周期和自有生命周期。其中,aboutToAppear和aboutToDisappear是自定义组件的生命周期(NavDestination外层包含的自定义组件),OnAppear和OnDisappear是组件的通用生命周期。剩下的六个生命周期为NavDestination独有。