当用户打开、切换和返回到对应应用时,应用中的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()回调中进行系统资源的释放、数据的保存等操作。
相关推荐
UIAbility 的创建与启动是 HarmonyOS 应用生命周期的一部分。当用户启动一个包含 UI 的应用时,系统会创建一个 UIAbility 实例并调用其 `onStart` 方法。在此阶段,开发者可以初始化 UI 组件,并设置初始显示内容。...
内容概要:本文详细解析了鸿蒙操作系统的开发相关内容,主要包括鸿蒙OS的基础知识及其特性的介绍,UI相关组件和布局的实现方式,深入讨论了鸿蒙中UIAbility及其生命周期管理、组件间的通信方式,如使用@Prop,@Link等...
2. **UIAbility 的生命周期包括 Create、WindowStageCreate、Foreground、Background、WindowStageDestroy 和 Destroy。**这些状态体现了 UIAbility 从创建到销毁的整个过程。 3. **UIAbility 有 Standard、...
2. UIAbility 的生命周期包括 Create、WindowStageCreate、Foreground、Background、WindowStageDestroy 和 Destroy 六个状态。这些状态反映了 UIAbility 在运行过程中的不同阶段。 3. UIAbility 有三种启动模式:...
UIAbility 提供了生命周期管理和用户界面渲染的能力,使得开发者可以专注于业务逻辑的实现。 在描述中提到的“页面跳转”是移动应用中常见的功能,它允许用户在不同的界面之间导航。在 HarmonyOS 中,我们可以通过 ...
- **合理使用生命周期**:正确处理生命周期事件,避免在关键生命周期钩子中执行耗时操作。 - **首页组件按需创建**:只在真正需要的时候创建首页组件,避免不必要的资源消耗。 - **使用异步机制**:通过异步机制来...
- 掌握Ability的生命周期管理。 - 学习如何在Ability之间实现页面跳转与数据传递。 - 使用AbilityContext启动其他Ability,并利用Want进行参数传递。 **2.3 实验内容** - **任务一:实现页面间的跳转** - 实现从...