【鸿蒙应用开发】【HCIA认证】模拟题每日1练(第2题) 原创

张荣超_九丘教育
发布于 2021-8-23 21:59
浏览
28收藏

【鸿蒙应用开发】【HCIA认证】模拟题每日1练(第2题)-鸿蒙开发者社区

    这道题考查的知识点是:AbilitySlice的生命周期。当AbilitySlice处于前台且具有焦点时,其与所属的Page具有相同的生命周期状态和同名的回调方法。因此,这道题考查的知识点,其实是Page Ability的生命周期图,但是,难度上要更大一些。

 

    可以到附件中下载对应的示例代码:MainAbility拥有MainAbilitySlice1和MainAbilitySlice2,在MainAbility中调用了方法setMainRoute(),将默认路由指定为了MainAbilitySlice1。MainAbilitySlice1中有一个Button,点击之后导航到MainAbilitySlice2。在MainAbility中,重写了所有的生命周期回调方法,并在每个回调方法中都打印一条info级别的日志。此外,在MainAbilitySlice1和MainAbilitySlice2中,也重写了所有的生命周期回调方法,并在每个回调方法中都打印一条info级别的日志。

 

    大家看如下的生命周期图:

【鸿蒙应用开发】【HCIA认证】模拟题每日1练(第2题)-鸿蒙开发者社区

当MainAbilitySlice1导航到MainAbilitySlice2时,MainAbilitySlice1变为不可见,回调方法onInactive()和onBackground()会分别被调用;MainAbilitySlice2变为可见,回调方法onStart()和onActive()会分别被调用。那这道题的答案是否是这样的呢?MainAbilitySlice1的回调方法onInactive()和onBackground()先分别被调用,然后MainAbilitySlice2的回调方法onStart()和onActive()再分别被调用。实际的调用顺序并非是这样的!

      大家可以自己去运行一下附件中的示例代码。实际的调用顺序是这样的:首先,MainAbilitySlice1的回调方法onInactive()被调用;然后,MainAbilitySlice2的回调方法onStart()和onActive()分别被调用;最后,MainAbilitySlice1的回调方法onBackground()被调用。

       只需要记住这个调用顺序就可以了。

       还有一点需要注意:在MainAbilitySlice1导航到MainAbilitySlice2的整个过程中,MainAbility始终处于“ACTIVE”状态。当MainAbility被系统销毁时,其所有已实例化的AbilitySlice都将联动销毁,而不仅是处于前台的AbilitySlice。

 

       向大家推荐由我的教学团队开发的视频课程《鸿蒙应用开发HCIA认证超细致精讲》:

https://edu.51cto.com/course/28571.html

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
标签
HCIA_Exercise2.zip 1.26M 107次下载
36
收藏 28
回复
举报
1条回复
按时间正序
/
按时间倒序
红叶亦知秋
红叶亦知秋

前排学习张老师讲解。

回复
2021-8-24 10:18:25
回复
    相关推荐