Stage模型
Stage模型提供了AbilityStage、WindowStage等类作为应用组件和window窗口的“舞台”,其设计基于: 1.为复杂的应用而设计 2.原生支持应用组件级的跨端迁移和多端协同 3.支持多设备和多窗口形态 4.平衡应用能力和系统管控成本
工程目录结构:配置文件
基于Stage模型开发的应用项目中都存在一个应用级配置文件app.json5、以及一个或者多个模块级配置文件module.json5。
UIAbility组件
UIAbility组件是一种包含UI的应用组件,主要用于和用户交互。 一个应用可以包含一个或多个UIAbility组件。
每一个UIAbility组件实例都会在最近任务列表中显示一个对应的任务。 如果希望在任务视图看到一个任务,建议使用“一个UIAbility+多页面”的方式,可以避免不必要的资源加载。
如果希望在任务视图看到多个任务,或者需要同时开启多个窗口,可以使用多个UIAbility实现不同的功能。
例如实时通讯类应用中的语音视频通话和消息列表采用不用的UIAbility进行开发,既可以方便地切换任务窗口,又可实现应用的两个任务窗口在一个屏幕上分屏显示。
声明配置
正常使用UIAbility需要再module.json5配置文件的abilities标签中声明UIAbility的名称、入口、标签的等相关信息
{
"module": {
// ...
"abilities": [
{
"name": "EntryAbility", // UIAbility组件的名称
"srcEntry": "./ets/entryability/EntryAbility.ets", // UIAbility组件的代码路径
"description": "$string:EntryAbility_desc", // UIAbility组件的描述信息
"icon": "$media:icon", // UIAbility组件的图标
"label": "$string:EntryAbility_label", // UIAbility组件的标签
"startWindowIcon": "$media:icon", // UIAbility组件启动页面图标资源文件的索引
"startWindowBackground": "$color:start_window_background", // UIAbility组件启动页面背景颜色资源文件的索引
// ...
}
]
}
}
生命周期
Create、Foreground、Background、Destroy四个状态
Create状态是在应用加载过程中UIAbility实例创建完成时触发,系统调用onCreate回调,可以在这个回调中进行应用初始化操作,例如变量定义、资源加载等,用于后续的UI展示。
Foreground状态是在UIAbility实例切换至前台时触发,onForeground回调在UIAbility的UI可见之前(即UIAbility切换至前台时)触发,可以在此回调中申请系统需要的资源,或者重新申请在onBackground中释放的资源。例如开启定位功能,获取定位信息。
Background状态是在UIAbility实例切换至后台时触发,onBackground回调在UIAbility的UI完全不可见之后(即UIAbility切换至后台时)触发,可以在此回调中释放UI不可见时的无用资源,或者执行较为耗时的操作,例如状态保存等。例如停止定位功能。
Destroy状态是用户从最近任务列表关闭任务时销毁当前的UIAbility实例时触发,onDestroy回调中可释放系统资源或者数据保存。
UIAbility内的页面创建
@Entry装饰的自定义组件为页面的入口组件,即页面的根节点,一个页面有且仅能有一个@Entry,一个页面可以由一个或者多个自定义组件组成。
指定UIAbility的启动页面
在UIAbility的onWindowStageCreate()生命周期回调中通过windowStage对象的loadContent()方法设置启动页面
获取UIAbility的上下文信息
UIAbility类拥有自身的上下文信息,该信息为UIAbilityContext类的实例,可调用getContext接口获取当前页面关联的UIAbilityContext或ExtensionContext。