当前位置:   article > 正文

HarmonyOS的生命周期有哪些?HarmonyOS的生命周期

HarmonyOS的生命周期有哪些?HarmonyOS的生命周期

1.页面和组件的生命周期文档

         在开始之前,我们先明确自定义组件和页面的关系:

        1.自定义组件@Component装饰的UI单元,可以组合多个系统组件实现UI的复用,可以调用组件的生命周期。

        2.页面:即应用的UI页面。可以由一个或者多个自定义组件组成,@Entry装饰的自定义组件为页面的入口组件,即页面的根节点,一个页面有且仅能有一个@Entry。只有被@Entry装饰的组件才可以调用页面的生命周期。

页面生命周期,即被@Entry装饰的组件生命周期,提供以下生命周期接口:

  • onPageShow:页面每次显示时触发一次,包括路由过程、应用进入前台等场景。
  • onPageHide:页面每次隐藏时触发一次,包括路由过程、应用进入后台等场景。
  • onBackPress:当用户点击返回按钮时触发。

组件生命周期,即一般用@Component装饰的自定义组件的生命周期,提供以下生命周期接口:

  • aboutToAppear:组件即将出现时回调该接口,具体时机为在创建自定义组件的新实例后,在执行其build()函数之前执行。(在组件创建前调用方法,可以去请求数据给变量赋值)
  • aboutToDisappear:在自定义组件析构销毁之前执行。不允许在aboutToDisappear函数中改变状态变量,特别是@Link变量的修改可能会导致应用程序行为不稳定。(在组件后被销毁前调用方法,可以去处理一些定时器)

生命周期流程如下图所示,下图展示的是被@Entry装饰的组件(首页)生命周期。

提示1:页面销毁生命周期,测试体现不出来,是监测不到的,在日志中查看不到被销毁事件的执行

提示2:aboutToApper和aboutToDisapper声明周期可以在@Entry页面组件内使用

提示3:页面组件的生命周期是不能在自定义组件@Component中使用的

2.UIAbility组件生命周期

        概述

        当用户打开、切换和返回到对应应用时,应用中的UIAbility实例会在其生命周期的不同状态之间转换。UIAbility类提供了一系列回调,通过这些回调可以知道当前UIAbility实例的某个状态发生改变,会经过UIAbility实例的创建和销毁,或者UIAbility实例发生了前后台的状态切换。

        UIAbility的生命周期包括Create、Foreground、Background、Destroy四个状态,如下图所示。

  • onCreate

Ability创建时回调,执行初始化业务逻辑操作。

  • onDestory

Ability生命周期回调,在销毁时回调,执行资源清理等操作。

  • onWindowStageCreate

当WindowStage创建后调用。

  • onWindowStageDestory

当WindowStage销毁后调用。

  • onForeground

Ability生命周期回调,当应用从后台转到前台时触发。

  • onBackground

Ability生命周期回调,当应用从前台转到后台时触发

生命周期的代码

可以在entrt-src-main-ets-ability文件中查看代码

  1. import UIAbility from '@ohos.app.ability.UIAbility';
  2. import hilog from '@ohos.hilog';
  3. import window from '@ohos.window';
  4. export default class EntryAbility extends UIAbility {
  5. onCreate(want, launchParam) {
  6. hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
  7. }
  8. onDestroy() {
  9. hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy');
  10. }
  11. onWindowStageCreate(windowStage: window.WindowStage) {
  12. // Main window is created, set main page for this ability
  13. hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');
  14. windowStage.loadContent('pages/Index', (err, data) => {
  15. if (err.code) {
  16. hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
  17. return;
  18. }
  19. hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? '');
  20. });
  21. }
  22. onWindowStageDestroy() {
  23. // Main window is destroyed, release UI related resources
  24. hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageDestroy');
  25. }
  26. onForeground() {
  27. // Ability has brought to foreground
  28. hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground');
  29. }
  30. onBackground() {
  31. // Ability has back to background
  32. hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onBackground');
  33. }
  34. }

提示:Ability生命周期使用hilog去打印一些日志

详细的Ability可以去看官方文档

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/258420
推荐阅读
相关标签
  

闽ICP备14008679号