写点什么

UIAbility 组件生命周期

作者:龙儿筝
  • 2024-11-07
    上海
  • 本文字数:1000 字

    阅读完需:约 3 分钟

当用户打开、切换和返回到对应应用时,应用中的 UIAbility 实例会在其生命周期的不同状态之间转换。UIAbility 类提供了一系列回调,通过这些回调可以知道当前 UIAbility 实例的某个状态发生改变,会经过 UIAbility 实例的创建和销毁,或者 UIAbility 实例发生了前后台的状态切换。


UIAbility 的生命周期包括 Create、Foreground、Background、Destroy 四个状态,如下图所示


Create 状态

Create 状态为在应用加载过程中,UIAbility 实例创建完成时触发,系统会调用 onCreate()回调。可以在该回调中进行页面初始化操作,例如变量定义资源加载等,用于后续的 UI 展示

WindowStageCreate 和 WindowStageDestroy 状态

UIAbility 实例创建完成之后,在进入 Foreground 之前,系统会创建一个 WindowStage。WindowStage 创建完成后会进入 onWindowStageCreate()回调,可以在该回调中设置 UI 加载、设置 WindowStage 的事件订阅



在 onWindowStageCreate()回调中通过 loadContent()方法设置应用要加载的页面,并根据需要调用 on('windowStageEvent')方法订阅 WindowStage 的事件(获焦/失焦、切到前台/切到后台、前台可交互/前台不可交互)。对应于 onWindowStageCreate()回调。在 UIAbility 实例销毁之前,则会先进入 onWindowStageDestroy()回调,可以在该回调中释放 UI 资源。对应 onWindowStageWillDestroy()回调,在 WindowStage 销毁前执行,此时 WindowStage 可以使用。

Foreground 和 Background 状态

Foreground 和 Background 状态分别在 UIAbility 实例切换至前台和切换至后台时触发,对应于 onForeground()回调和 onBackground()回调。


onForeground()回调,在 UIAbility 的 UI 可见之前,如 UIAbility 切换至前台时触发。可以在 onForeground()回调中申请系统需要的资源,或者重新申请在 onBackground()中释放的资源。


onBackground()回调,在 UIAbility 的 UI 完全不可见之后,如 UIAbility 切换至后台时候触发。可以在 onBackground()回调中释放 UI 不可见时无用的资源,或者在此回调中执行较为耗时的操作,例如状态保存等。


当应用的 UIAbility 实例已创建,且 UIAbility 配置为 singleton 启动模式时,再次调用 startAbility()方法启动该 UIAbility 实例时,只会进入该 UIAbility 的 onNewWant()回调,不会进入其 onCreate()和 onWindowStageCreate()生命周期回调。应用可以在该回调中更新要加载的资源和数据等,用于后续的 UI 展示。

Destroy 状态

Destroy 状态在 UIAbility 实例销毁时触发。可以在 onDestroy()回调中进行系统资源的释放、数据的保存等操作。


发布于: 刚刚阅读数: 6
用户头像

龙儿筝

关注

还未添加个人签名 2024-10-27 加入

还未添加个人简介

评论

发布
暂无评论
UIAbility组件生命周期_龙儿筝_InfoQ写作社区