AbilityStage
AbilityStage UIAbility UIAbilityContext Context WindowStage Window ArkUI Page
ExtensionAbility
Context HAP
UIAbility组件是一种包含UI界面的应用组件,主要用于和用户交互。
UIAbility组件是系统调度的基本单元,为应用提供绘制界面的窗口;一个UIAbility组件中可以通过多个页面来实现一个功能模块。每一个UIAbility组件实例,都对应于一个最近任务列表中的任务。
module.json5配置:
{
"module": {
// ...
"abilities": [
{
"name": "EntryAbility", // UIAbility组件的名称
"srcEntry": "./ets/entryability/EntryAbility.ts", // 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组件启动页面背景颜色资源文件的索引
// ...
}
]
}
}
UIAbility onCreate
WindowStage onWindowStageCreate
UIAbility onForeground
WindowStage Visible
WindowStage Active
WindowStage InActive
WindowStage InVisible
UIAbility onBackground
WindowStage onWindowStageDestroy
UIAbility onDestory
WindowStageCreate和WindowStageDestroy状态
指定UIAbility的启动页面
windowStage.loadContent
获取UIAbility的上下文信息
UIAbility.context UIAbilityContext
启动应用内的UIAbility
this.context.startAbility(wantInfo)
启动应用内的UIAbility并获取返回结果
this.context.startAbilityForResult(wantInfo)
启动其他应用的UIAbility
显式Want启动:启动一个确定应用的UIAbility,在want参数中需要设置该应用bundleName和abilityName,当需要拉起某个明确的UIAbility时,通常使用显式Want启动方式。 隐式Want启动:根据匹配条件由用户选择启动哪一个UIAbility,即不明确指出要启动哪一个UIAbility
启动其他应用的UIAbility并获取返回结果
this.context.startAbilityForResult(wantInfo)
启动UIAbility的指定页面
首次启动: onCreate(want, launchParam) 非首次启动: onNewWant(want, launchParam)
ExtensionAbility组件是基于特定场景提供的应用组件,以便满足更多的使用场景。 每一个具体场景对应一个ExtensionAbilityType
服务卡片(以下简称“卡片”)是一种界面展示形式,可以将应用的重要信息或操作前置到卡片,以达到服务直达、减少体验层级的目的。卡片常用于嵌入到其他应用(当前卡片使用方只支持系统应用,如桌面)中作为其界面显示的一部分,并支持拉起页面、发送消息等基础的交互功能。
AbilityStage是一个Module级别的组件容器,应用的HAP在首次加载时会创建一个AbilityStage实例,可以对该Module进行初始化等操作。
AbilityStage与Module一一对应,即一个Module拥有一个AbilityStage。
AbilityStage拥有onCreate()生命周期回调和onAcceptWant()、onConfigurationUpdated()、onMemoryLevel()事件回调。
各类Context的继承关系
BaseContext Context ApplicationContext AbilityStageContext UIAbilityContext ExtensionContext 其他ExtensionContext FormExtensionAbility ServiceExtensionContext
let abilityLifecycleCallback = {
除主线程外,还有一类与主线程并行的独立线程Worker,主要用于执行耗时操作,但不可以直接操作UI。Worker线程在主线程中创建,与主线程相互独立。最多可以创建8个Worker: 基于HarmonyOS的线程模型,不同的业务功能运行在不同的线程上,业务功能的交互就需要线程间通信。线程间通信目前主要有Emitter和Worker两种方式,其中Emitter主要适用于线程间的事件同步, Worker主要用于新开一个线程执行耗时任务。