Stage模型应用组件
UIAbility组件
生命周期
UIAbility组件是一种包含UI的应用组件,主要用于和用户交互。
UIAbility的生命周期包括Create、Foreground、Background、Destroy四个状态,如下图所示。
图1 UIAbility生命周期状态
WindowStageCreate和WindowStageDestroy状态
UIAbility实例创建完成之后,在进入Foreground之前,系统会创建一个WindowStage。WindowStage创建完成后会进入onWindowStageCreate()
回调,可以在该回调中设置UI加载、设置WindowStage的事件订阅。
图2 WindowStageCreate和WindowStageDestroy状态
启动模式
三种启动模式:
-
singleton(单实例模式)默认情况下的启动模式
-
specified(指定实例模式)类似栈内复用
UIAbility组件与UI的数据同步
- 使用EventHub进行数据通信:在基类Context中提供了EventHub对象,可以通过发布订阅方式来实现事件的传递。在事件传递前,订阅者需要先进行订阅,当发布者发布事件时,订阅者将接收到事件并进行相应处理。
- 使用AppStorage/LocalStorage进行数据同步:ArkUI提供了AppStorage和LocalStorage两种应用级别的状态管理方案,可用于实现应用级别和UIAbility级别的数据同步。
ExtensionAbility组件
ExtensionAbility组件是基于特定场景(例如服务卡片、输入法等)提供的应用组件,以便满足更多的使用场景。
对于系统应用,不受下表约束,允许实现系统已定义的各类ExtensionAbility,也允许访问提供的各类对外服务。
已支持ExtensionAbility类型 | 功能描述 | 是否允许三方应用实现 | 是否允许三方应用访问 |
---|---|---|---|
FormExtensionAbility | FORM类型的ExtensionAbility组件,用于提供服务卡片的相关能力。 | Y | N |
WorkSchedulerExtensionAbility | WORK_SCHEDULER类型的ExtensionAbility组件,用于提供延迟任务的相关能力。 | Y | NA |
InputMethodExtensionAbility | INPUT_METHOD类型的ExtensionAbility组件,用于实现输入法应用的开发。 | Y | Y |
AccessibilityExtensionAbility | ACCESSIBILITY类型的ExtensionAbility组件,用于实现无障碍扩展服务的开发。 | Y | NA |
BackupExtensionAbility | BACKUP类型的ExtensionAbility组件,用于提供备份及恢复应用数据的能力。 | Y | NA |
DriverExtensionAbility | DRIVER类型的ExtensionAbility组件,用于提供驱动相关扩展框架。 | Y | Y |
访问指定类型的ExtensionAbility组件
所有类型的ExtensionAbility组件均不能被应用直接启动,而是由相应的系统管理服务拉起,以确保其生命周期受系统管控,使用时拉起,使用完销毁。ExtensionAbility组件的调用方无需关心目标ExtensionAbility组件的生命周期。
实现指定类型的ExtensionAbility组件
以实现卡片FormExtensionAbility为例进行说明。卡片框架提供了FormExtensionAbility基类,开发者通过派生此基类(如MyFormExtensionAbility),实现回调(如创建卡片的onCreate()回调、更新卡片的onUpdateForm()回调等)来实现具体卡片功能,具体见开发指导见服务卡片。
AbilityStage组件容器
AbilityStage是一个Module级别的组件容器,应用的HAP在首次加载时会创建一个AbilityStage实例,可以对该Module进行初始化等操作。
AbilityStage与Module一一对应,即一个Module拥有一个AbilityStage。
生命周期
AbilityStage拥有onCreate()生命周期回调和onAcceptWant()、onConfigurationUpdated()、onMemoryLevel()事件回调。
-
onCreate()生命周期回调:在开始加载对应Module的第一个UIAbility实例之前会先创建AbilityStage,并在AbilityStage创建完成之后执行其
onCreate()
生命周期回调。AbilityStage模块提供在Module加载的时候,通知开发者,可以在此进行该Module的初始化(如资源预加载,线程创建等)能力。 -
onAcceptWant()事件回调:UIAbility指定实例模式(specified)启动时候触发的事件回调,具体使用请参见UIAbility启动模式综述。
-
onConfigurationUpdated()事件回调:当系统全局配置发生变更时触发的事件,系统语言、深浅色等,配置项目前均定义在Configuration类中。
-
onMemoryLevel()事件回调:当系统调整内存时触发的事件。
应用上下文Context
Context是应用中对象的上下文,其提供了应用的一些基础信息。
各类Context的继承关系
信息传递载体Want
Want是一种对象,用于在应用组件之间传递信息。
Want的类型
显式Want:在启动目标应用组件时,调用方传入的want参数中指定了abilityName和bundleName,称为显式Want。
隐式Want:在启动目标应用组件时,调用方传入的want参数中未指定abilityName,称为隐式Want。