赞
踩
在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组件启动模式有三种:singleton(单实例模式)standard(标准实例模式)和specified(指定实例模式)
更改启动模式的方式在配置文件中添加"launchType"字段配置为对应模式
{
"module": {
// ...
"abilities": [
{
"launchType": "standard",
// ...
}
]
}
}
首次进入的执行顺序是页面渲染前(build函数之前),执行onCreate函数,然后执行onWindowStageCreate函数,最后执行onForeground函数。
切换至后台执行onBackground函数,这里理论上不止调用这个函数,此处应该是日志丢失了,应该还会调用onNewWant回调
再次进入该应用是执行onForeground函数
退出应用的执行顺序是执行onBackground函数,然后执行onWindowStageDestroy函数,最后执行onDestroy函数。
需要注意的是,假如我们是通过手机的资源管理器直接中止关闭了应用,只会执行切换至后台所触发的onBackground函数,而onDestroy函数并不能触发。在这里的进程被中断了,生命周期函数无法执行,数据也无法保存。
首次进入的执行顺序是页面渲染前(build函数之前),执行onCreate函数,然后执行onWindowStageCreate函数,最后执行onForeground函数。
切换至后台执行onBackground函数
再次进入该应用是先执行onCreate函数,再执行执行onWindowStageCreate函数,最后执行onForeground函数
退出应用的执行顺序是执行onBackground函数,然后执行onWindowStageDestroy函数,再执行onDestroy函数,最后还会执行onForeground函数。
与前者不同的是,每次调用 startAbility() 方法时,都会在应用进程中创建一个新的该类型UIAbility实例,而不会调用onNewWant函数
看红色框可以知道,调用 startAbility() 方法之后,在应用进程中还是会创建一个新的该类型UIAbility实例
看蓝色框可以知道,调用 startAbility() 方法之后,并不会创建一个新的该类型UIAbility实例,而是调用onNewWant回调。
这是为了针对一些特殊场景使用(例如文档应用中每次新建文档希望都能新建一个文档实例,重复打开一个已保存的文档希望打开的都是同一个文档实例)
提示:在创建MyAbilityStage后,需要在配置文件module.json5中添加一行代码(如下图,内容为其相对地址)
只有onCreate、onMemoryLevel(调整内存触发)、onConfigurationUpdated(系统全局配置发生变更时触发)可触发
还有onAcceptWant(每次进入或切回应用时都会触发)可触发
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。