鸿蒙App开发实战,Ability和AbilitySlice,有生命周期?
用户操作等行为均会引起页面实例在其生命周期的不同状态之间进行转换,Ability类提供的回调机制能够让其感知外界的变化,从而执行不同的方法。生命周期的不同状态转换及其对应的回调,如图8.1所示。
图 8.1 生命周期
说白点,就是窗口(页面),在启动时,切换时,隐藏时,关闭时会执行对应的回调方法,方便程序员进行相关的处理。如关闭窗口时,进行资源释放。
onStart()方法
首次创建页面实例时,触发该回调方法,在其生命周期过程中仅触发一次。一般在此执行Ability的初始化工作,如加载布局模板。
@Override
public void onStart(Intent intent) {
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_ability_main);
}
onActive()方法
当Ability可见且获得用户焦点能交互时系统会调用这个方法,在这可处理在onStart()之后的一些补充工作。
@Override
public void onActive() {
}
onInactive()方法
当Ability失去焦点时,系统将调用此回调,此后进入INACTIVE状态。程序员可以在此回调中实现页面在失去焦点时需要进行处理的业务,如保存临时数据。
@Override
public void onInactive() {
}
onBackground()方法
在Ability不再对用户可见时,系统将调用此回调,如用户跳转到其他窗口时,会隐藏这个Ability。程序员可以在此方法中释放Ability不可见时无用的资源,或在此回调中执行较为耗时的状态保存操作。
@Override
public void onBackground() {
}
onForeground()方法
处于BACKGROUND状态的Ability仍然驻留在内存中,当重新回到前台时,如用户导航到此Ability时,将会回调这个onForeground()。
@Override
public void onForeground(Intent intent) {
}
onStop()
系统将要销毁Ability时,将会触发此回调函数,通知用户进行系统资源的释放。
@Override
public void onStop() {
}
以上方法告诉你,人到什么时候,就该做什么事,鸿蒙出来了,该学鸿蒙App开发时就学。否则将错失良机。
AbilitySlice作为Ability的组成单元,其生命周期是依托于其所属Ability生命周期的。AbilitySlice和Page具有相同的生命周期状态和同名的回调,当Ability生命周期发生变化时,它的AbilitySlice也会发生相同的生命周期变化,它与Ability的相应回调类似,因此不再赘述。
回调方法,不是每一个都会被用到的,不用特意背记。在项目实战时,你就能清楚地知道用到哪一些了。