|
UIAbility的生命周期
在KaihongOS中,EntryAbility.ets 是一个关键的文件,它定义了应用的入口Ability。以下是EntryAbility.ets中涉及的生命周期和功能。
1. Create状态:
- onCreate():当UIAbility实例创建完成时触发,系统会调用此回调。开发者可以在该回调中进行页面初始化操作,例如变量定义、资源加载等,用于后续的UI展示。
2. WindowStageCreate状态:
- onWindowStageCreate(windowStage: window.WindowStage):在UIAbility实例创建完成之后,在进入Foreground之前,系统会创建一个WindowStage。WindowStage创建完成后会进入此回调,开发者可以在该回调中设置UI加载、设置WindowStage的事件订阅。例如,通过windowStage.loadContent(‘pages/Index’, (err) => {…})加载pages/Index.ets页面。
3. WindowStageDestroy状态:
- onWindowStageDestroy():在UIAbility实例销毁之前,则会先进入此回调。开发者可以在此回调中释放与UI相关的资源。
4. Foreground状态:
- onForeground():在UIAbility的UI界面可见之前,如UIAbility切换至前台时触发。可以在onForeground()回调中申请系统需要的资源,或者重新申请在onBackground()中释放的资源。
5. Background状态:
- onBackground():在UIAbility的UI界面完全不可见之后,如UIAbility切换至后台时触发。可以在onBackground()回调中释放UI界面不可见时无用的资源,或者在此回调中执行较为耗时的操作,例如状态保存等。
6. Destroy状态:
- onDestroy():当UIAbility实例即将被销毁时,会进入Destroy状态。系统会调用此回调,开发者可以在这里执行清理操作,比如停止后台任务、释放资源等。
这些状态和回调方法为开发者提供了UIAbility生命周期的监控能力,使得开发者可以根据UIAbility的不同状态执行相应的操作,以提供更好的用户体验和资源管理。
在一个新创建的项目中,可以看到一个默认的 EntryAbility.ets文件,该文件定义了UIAbility的生命周期。
// EntryAbility.etsimport AbilityConstant from '@ohos.app.ability.AbilityConstant';import hilog from '@ohos.hilog';import UIAbility from '@ohos.app.ability.UIAbility';import Want from '@ohos.app.ability.Want';import window from '@ohos.window';export default class EntryAbility extends UIAbility { onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate'); } onDestroy(): void { hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy'); } onWindowStageCreate(windowStage: window.WindowStage): void { // Main window is created, set main page for this ability hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate'); windowStage.loadContent('pages/Index', (err) => { if (err.code) { hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? ''); return; } hilog.info(0x0000, 'testTag', 'Succeeded in loading the content.'); }); } onWindowStageDestroy(): void { // Main window is destroyed, release UI related resources hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageDestroy'); } onForeground(): void { // Ability has brought to foreground hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground'); } onBackground(): void { // Ability has back to background hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onBackground'); }}
|