当前位置:   article > 正文

Stage模型生命周期函数_在stage模型中,ability的生命周期回调函数有哪些

在stage模型中,ability的生命周期回调函数有哪些

Stage模型中的基本概念

在这里插入图片描述
在ArKUI Page、Window、WindowStage、UIAbility和AbilityStage中均存在生命周期函数
    UIAbility和AbilityStage组件容器的生命周期函数在预览器中很难进行可视化展示(console打印),而openHarmony暂时没有真机模拟器可使用,在没有开发版的前提下,可以使用harmonyOS的真机模拟器来学习

一、自定义组件的生命周期

在这里插入图片描述
    首次进入的执行顺序是页面渲染前(build函数之前),执行aboutToAppear函数,然后执行onPageshow函数,而且在界面每次显示时也会执行一次。
    进入下一个页面的执行顺序是先执行当前页面的onPageHide函数,再执行下一个页面的aboutToAppear函数,最后执行下一个页面的onPageHide函数。
    返回上一个页面的执行顺序是如果是用户点击了,则会先执行onBackPress函数(可在里面自定义自己处理返回逻辑),否则就直接执行当前页面的onPageHide函数,然后执行上一个页面的onPageShow函数,然后执行当前页面的aboutToDisappear函数。

问题:观察最后一个紫色框,testPage页面没有执行onPageHide函数?
  这是目前ide的一些小bug,部分日志打印丢失,但是生命周期函数是照常按序进行的

二、UIAbility生命周期

UIAbility组件启动模式有三种:singleton(单实例模式)standard(标准实例模式)和specified(指定实例模式)
更改启动模式的方式在配置文件中添加"launchType"字段配置为对应模式

{
  "module": {
    // ...
    "abilities": [
      {
        "launchType": "standard",
        // ...
      }
    ]
  }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

singleton模式

在这里插入图片描述
  首次进入的执行顺序是页面渲染前(build函数之前),执行onCreate函数,然后执行onWindowStageCreate函数,最后执行onForeground函数。
  切换至后台执行onBackground函数,这里理论上不止调用这个函数,此处应该是日志丢失了,应该还会调用onNewWant回调
  再次进入该应用是执行onForeground函数
  退出应用的执行顺序是执行onBackground函数,然后执行onWindowStageDestroy函数,最后执行onDestroy函数。
  需要注意的是,假如我们是通过手机的资源管理器直接中止关闭了应用,只会执行切换至后台所触发的onBackground函数,而onDestroy函数并不能触发。在这里的进程被中断了,生命周期函数无法执行,数据也无法保存。

standard模式

在这里插入图片描述
  首次进入的执行顺序是页面渲染前(build函数之前),执行onCreate函数,然后执行onWindowStageCreate函数,最后执行onForeground函数。
  切换至后台执行onBackground函数
  再次进入该应用是先执行onCreate函数,再执行执行onWindowStageCreate函数,最后执行onForeground函数
  退出应用的执行顺序是执行onBackground函数,然后执行onWindowStageDestroy函数,再执行onDestroy函数,最后还会执行onForeground函数。
与前者不同的是,每次调用 startAbility() 方法时,都会在应用进程中创建一个新的该类型UIAbility实例,而不会调用onNewWant函数

specified模式

情况一:未绑定Key(如下图)

在这里插入图片描述
在这里插入图片描述
  看红色框可以知道,调用 startAbility() 方法之后,在应用进程中还是会创建一个新的该类型UIAbility实例

情况二:绑定Key(如下图)

在这里插入图片描述

在这里插入图片描述
  看蓝色框可以知道,调用 startAbility() 方法之后,并不会创建一个新的该类型UIAbility实例,而是调用onNewWant回调。

这是为了针对一些特殊场景使用(例如文档应用中每次新建文档希望都能新建一个文档实例,重复打开一个已保存的文档希望打开的都是同一个文档实例)

在这里插入图片描述

提示:在创建MyAbilityStage后,需要在配置文件module.json5中添加一行代码(如下图,内容为其相对地址)
在这里插入图片描述

三、AbilityStage组件容器生命周期函数

非specified模式

在这里插入图片描述
  只有onCreateonMemoryLevel(调整内存触发)、onConfigurationUpdated(系统全局配置发生变更时触发)可触发

specified模式

在这里插入图片描述
  还有onAcceptWant(每次进入或切回应用时都会触发)可触发

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

闽ICP备14008679号