当用户浏览、切换和返回到对应应用的时候,应用中的UIAbility
实例会在其生命周期的不同状态之间转换。
UIAbility
类提供了很多回调,通过这些回调可以知晓当前UIAbility
的某个状态已经发生改变:例如UIAbility
的创建和销毁,或者UIAbility
发生了前后台的状态切换。
例如从桌面点击图库应用图标,到启动图库应用,应用的状态经过了从创建到前台展示的状态变化。如下图所示。
回到桌面,从最近任务列表,切换回到图库应用,应用的状态经过了从后台到前台展示的状态变化。如下图所示。
从最近任务列表切换回到图库应用
在
UIAbility
的使用过程中,会有多种生命周期状态。掌握UIAbility
的生命周期,对于应用的开发非常重要。为了实现多设备形态上的裁剪和多窗口的可扩展性,系统对组件管理和窗口管理进行了解耦。
UIAbility
的生命周期包括Create
、Foreground
、Background
、Destroy
四个状态,WindowStageCreate
和WindowStageDestroy
为窗口管理器(WindowStage
)在UIAbility
中管理UI
界面功能的两个生命周期回调,从而实现UIAbility
与窗口之间的弱耦合。如下图所示。
UIAbility生命周期状态
示例代码
import UIAbility from '@ohos.app.ability.UIAbility';
import window from '@ohos.window';
export default class EntryAbility extends UIAbility {
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
// 应用初始化
...
}
onWindowStageCreate(windowStage: window.WindowStage) {
// 设置UI页面加载
// 设置WindowStage的事件订阅(获焦/失焦、可见/不可见)
...
windowStage.loadContent('pages/Index', (err, data) => {
...
});
}
onForeground() {
// 申请系统需要的资源,或者重新申请在onBackground中释放的资源
}
onBackground() {
// 释放UI页面不可见时无用的资源,或者在此回调中执行较为耗时的操作
// 例如状态保存等
...
}
onWindowStageDestroy() {
// 释放UI页面资源
...
}
onDestroy() {
// 系统资源的释放、数据的保存等
...
}
}
网友评论