【鸿蒙应用开发】【HCIA认证】模拟题每日1练(第2题) 原创
这道题考查的知识点是:AbilitySlice的生命周期。当AbilitySlice处于前台且具有焦点时,其与所属的Page具有相同的生命周期状态和同名的回调方法。因此,这道题考查的知识点,其实是Page Ability的生命周期图,但是,难度上要更大一些。
可以到附件中下载对应的示例代码:MainAbility拥有MainAbilitySlice1和MainAbilitySlice2,在MainAbility中调用了方法setMainRoute(),将默认路由指定为了MainAbilitySlice1。MainAbilitySlice1中有一个Button,点击之后导航到MainAbilitySlice2。在MainAbility中,重写了所有的生命周期回调方法,并在每个回调方法中都打印一条info级别的日志。此外,在MainAbilitySlice1和MainAbilitySlice2中,也重写了所有的生命周期回调方法,并在每个回调方法中都打印一条info级别的日志。
大家看如下的生命周期图:
当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认证超细致精讲》:
前排学习张老师讲解。