当前位置: 首页>后端>正文

HarmonyOS——Ability和AbilitySlice生命周期(一)

??HarmonyOS 中的页面会用到Ability和AbilitySlice。Ability是提供与用户交互的能力。AbilitySlice是一个页面及其逻辑的总和。两者的关系可以是一对多。也就是一个Ability中可以包含多个不同的AbilitySlice,可以在一个Ability中实现Ability间的跳转。
??对于Ability和AbilitySlice都有自己的生命周期,而由于两者的联系,两者的生命周期又是有关联的。现在举例说明其中的生命周期流程。
??这次的demo只针对一个Ability中含有一个AbilitySliced来分析生命周期。

Ability的生命周期

以下是官方给的Page的生命周期


HarmonyOS——Ability和AbilitySlice生命周期(一),第1张
截屏2021-06-10 下午4.32.24.png

图中基本包含了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页面

HarmonyOS——Ability和AbilitySlice生命周期(一),第2张
截屏2021-06-10 下午3.29.20.png

??说明:图中,Ability和AbilitySlice的生命周期基本一致,只是在Ability中,会多2个回调:onPostStart和onPostActive。对于这两个方法,官方文档的解释就是当Ability的onStart()和onActive()后的例行操作,建议不需要复写此两个方法,这里我们就忽略。

??2、从PageA跳转到PageB页面

HarmonyOS——Ability和AbilitySlice生命周期(一),第3张
截屏2021-06-10 下午3.29.14.png
  • 图中包含了创建PageA时的生命周期。
  • 当点击按钮跳转到PageB时,PageA的状态变成HarmonyOS——Ability和AbilitySlice生命周期(一),\color{red}{InActive},第4张;
  • 开始PageB的生命周期,PageB的生命周期和上面PageA的生命周期一致,最后PageB的状态变为HarmonyOS——Ability和AbilitySlice生命周期(一),\color{red}{Active},第5张
  • PageA的状态变为HarmonyOS——Ability和AbilitySlice生命周期(一),\color{red}{Background},第6张

??3、从PageB退回到PageA页面

HarmonyOS——Ability和AbilitySlice生命周期(一),第7张
截屏2021-06-10 下午3.29.09.png
  • 说明:我们只关注”点击返回按钮“后的情况。
  • 当点击返回按钮是时,PageB的状态变为HarmonyOS——Ability和AbilitySlice生命周期(一),\color{red}{InActive},第4张;
  • PageA的生命状态还处在HarmonyOS——Ability和AbilitySlice生命周期(一),\color{red}{Background},第6张,然后回调HarmonyOS——Ability和AbilitySlice生命周期(一),\color{blue}{onForeground},第10张,最后PageA的状态由HarmonyOS——Ability和AbilitySlice生命周期(一),\color{red}{Background},第6张变成HarmonyOS——Ability和AbilitySlice生命周期(一),\color{red}{Active},第5张
  • PageB的状态变为HarmonyOS——Ability和AbilitySlice生命周期(一),\color{red}{Background},第6张,最后再变成HarmonyOS——Ability和AbilitySlice生命周期(一),\color{red}{Stop},第14张被销毁。

??整个页面流程就是PageA ——> PageB ,再有PageB ——> PageA。里面包含了对应的AbilitySlice的回调处理。
??后续将补充关于在PageA中出现AbilitySlice切换的情况,在切换的情况下,对应的不同AbilitySlice的回调又是如何……

HarmonyOs Demo地址


https://www.xamrdz.com/backend/3sb1937848.html

相关文章: