HarmonyOS 中的页面会用到Ability和AbilitySlice。Ability是提供与用户交互的能力。AbilitySlice是一个页面及其逻辑的总和。两者的关系可以是一对多。也就是一个Ability中可以包含多个不同的AbilitySlice,可以在一个Ability中实现Ability间的跳转。
对于Ability和AbilitySlice都有自己的生命周期,而由于两者的联系,两者的生命周期又是有关联的。现在举例说明其中的生命周期流程。
这次的demo只针对一个Ability中含有一个AbilitySliced来分析生命周期。
Ability的生命周期
以下是官方给的Page的生命周期
图中基本包含了Ability的主要生命周期的回调。
AbilitySlice的生命周期
AbilitySlice是Ability的组成部分,其生命周期依托于其所在的Ability的生命周期。AbilitySlice和Ability有相同的生命周期状态和同名的回调函数,当Ability的生命周期发生变化时,其AbilitySlice的生命周期也会发生对应的变化。但是,AbilitySlice还具有独立的生命周期,当一个Ability含有多个AbilitySlice的时候,如果AbilitySlice在Ability内部进行切换的时候,Ability的生命周期不发生变化,AbilitySlice的生命周期却会发生变化。
demo思路
为了研究生命周期变化,创建两个页面PageA和PageB,每个Page就是一个Ability和AbilitySlice。然后在PageA中有一个button,button点击跳转到PageB中。
以下是在不同页面停留时的生命周期输出。
1、显示PageA页面
说明:图中,Ability和AbilitySlice的生命周期基本一致,只是在Ability中,会多2个回调:onPostStart和onPostActive。对于这两个方法,官方文档的解释就是当Ability的onStart()和onActive()后的例行操作,建议不需要复写此两个方法,这里我们就忽略。
2、从PageA跳转到PageB页面
- 图中包含了创建PageA时的生命周期。
- 当点击按钮跳转到PageB时,PageA的状态变成;
- 开始PageB的生命周期,PageB的生命周期和上面PageA的生命周期一致,最后PageB的状态变为。
- PageA的状态变为。
3、从PageB退回到PageA页面
- 说明:我们只关注”点击返回按钮“后的情况。
- 当点击返回按钮是时,PageB的状态变为;
- PageA的生命状态还处在,然后回调,最后PageA的状态由变成。
- PageB的状态变为,最后再变成被销毁。
整个页面流程就是PageA ——> PageB ,再有PageB ——> PageA。里面包含了对应的AbilitySlice的回调处理。
后续将补充关于在PageA中出现AbilitySlice切换的情况,在切换的情况下,对应的不同AbilitySlice的回调又是如何……