Stage模型生命周期函数

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",
        // ...
      }
    ]
  }
}

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(每次进入或切回应用时都会触发)可触发

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值