npx skills add https://github.com/mengfei0053/skills --skill openharmony-ability-kitSKILL.md
OpenHarmony Ability Kit 快速参考
概述
Ability Kit 是 OpenHarmony Stage 模型中管理应用组件的核心框架。它提供:
- UIAbility: 带生命周期的 UI 应用组件
- AbilityStage: 模块级组件管理器,用于初始化
- Want: 组件间通信的数据载体
- Context: 应用/组件上下文,用于资源访问和操作
- ExtensionAbility: 扩展能力(Form、Service 等)
- BundleManager: 包和应用信息查询
官方文档: docs-OpenHarmony-v6.0-Release/zh-cn/application-dev/reference/apis-ability-kit/
决策流程
digraph ability_decision {
"需要?" [shape=diamond];
"创建 UI 应用" [shape=box];
"后台任务" [shape=box];
"跨应用通信" [shape=box];
"查询应用信息" [shape=box];
"使用 UIAbility" [shape=ellipse];
"使用 ExtensionAbility" [shape=ellipse];
"使用 Want + Context" [shape=ellipse];
"使用 BundleManager" [shape=ellipse];
"需要?" -> "创建 UI 应用" [label="UI"];
"需要?" -> "后台任务" [label="后台"];
"需要?" -> "跨应用通信" [label="通信"];
"需要?" -> "查询应用信息" [label="信息"];
"创建 UI 应用" -> "使用 UIAbility";
"后台任务" -> "使用 ExtensionAbility";
"跨应用通信" -> "使用 Want + Context";
"查询应用信息" -> "使用 BundleManager";
}
快速参考表
| 模块 | API 版本 | 用途 | 导入语句 |
|---|---|---|---|
| UIAbility | 9+ | UI 应用组件 | import { UIAbility } from '@kit.AbilityKit' |
| AbilityStage | 9+ | 模块级管理器 | import { AbilityStage } from '@kit.AbilityKit' |
| Want | 9+ | 组件通信 | import { Want } from '@kit.AbilityKit' |
| common (Context) | 9+ | Context API | import { common } from '@kit.AbilityKit' |
| bundleManager | 9+ | 包查询 | import { bundleManager } from '@kit.AbilityKit' |
| wantAgent | 9+ | Want 封装 | import { wantAgent } from '@kit.AbilityKit' |
| appManager | 9+ | 应用生命周期管理 | import { appManager } from '@kit.AbilityKit' |
| AbilityConstant | 9+ | Ability 常量 | import { AbilityConstant } from '@kit.AbilityKit' |
| Configuration | 9+ | 系统配置 | import { Configuration } from '@kit.AbilityKit' |
UIAbility 生命周期
生命周期状态
Create -> WindowStageCreate -> Foreground <-> Background -> WindowStageDestroy -> Destroy
关键回调
| 回调 | 调用时机 | 使用场景 |
|---|---|---|
onCreate(want, launchParam) | Ability 创建时 | 初始化非 UI 资源 |
onWindowStageCreate(windowStage) | 窗口就绪时 | 加载 UI 内容,设置窗口属性 |
onForeground() | 进入前台时 | 恢复操作,刷新数据 |
onBackground() | 进入后台时 | 保存状态,释放资源 |
onWindowStageDestroy() | 窗口销毁时 | 清理窗口资源 |
onDestroy() | Ability 销毁时 | 最终清理 |
onNewWant(want, launchParam) | 重新激活(单例模式) | 处理新的意图 |
基础 UIAbility 模板
import { UIAbility, AbilityConstant, Want } from '@kit.AbilityKit';
import { window } from '@kit.ArkUI';
import { hilog } from '@kit.PerformanceAnalysisKit';
export default class EntryAbility extends UIAbility {
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
hilog.info(0x0000, 'testTag', 'Ability onCreate');
// 初始化非 UI 资源
}
onWindowStageCreate(windowStage: window.WindowStage): void {
hilog.info(0x0000, 'testTag', 'Ability onWindowStageCreate');
// 加载主页面
windowStage.loadContent('pages/Index', (err, data) => {
if (err.code) {
hilog.error(0x0000, 'testTag', 'Failed to load content: %{public}s', JSON.stringify(err));
return;
}
hilog.info(0x0000, 'testTag', 'Succeeded in loading content');
});
}
onForeground(): void {
hilog.info(0x0000, 'testTag', 'Ability onForeground');
}
onBackground(): void {
hilog.info(0x0000, 'testTag', 'Ability onBackground');
}
onDestroy(): void {
hilog.info(0x0000, 'testTag', 'Ability onDestroy');
}
}
启动类型
| 类型 | 值 | 说明 | 使用场景 |
|---|---|---|---|
SINGLETON | 0 | 单实例 | 主入口、设置页 |
MULTITON | 1 | 多实例 | 文档编辑器 |
SPECIFIED | 2 | 开发者控制 | 自定义实例管理 |
在 module.json5 中配置:
{
"abilities": [{
"name": "EntryAbility",
"launchType": "singleton"
}]
}
AbilityStage
模块级组件管理器,在模块中的任何 Ability 之前创建。
关键回调
| 回调 | 调用时机 | 使用场景 |
|---|---|---|
onCreate() | 模块首次加载时 | 资源预加载、线程创建 |
onDestroy() | 最后一个 ability 退出时 (API 12+) | 模块清理 |
onAcceptWant(want) | 指定启动模式 | 返回唯一 ability 键 |
onConfigurationUpdate(config) | 系统配置变化时 | 处理语言/主题变化 |
onMemoryLevel(level) | 内存压力时 | 释放非必要资源 |
基础 AbilityStage 模板
import { AbilityStage, Want, Configuration, AbilityConstant } from '@kit.AbilityKit';
export default class MyAbilityStage extends AbilityStage {
onCreate(): void {
console.log('MyAbilityStage onCreate');
// 模块初始化
}
onAcceptWant(want: Want): string {
// 对于指定启动模式,返回唯一键
if (want.abilityName === 'DocumentAbility') {
return want.parameters?.docId as string || 'default';
}
return '';
}
onConfigurationUpdate(config: Configuration): void {
console.log(`Config updated: ${JSON.stringify(config)}`);
}
onMemoryLevel(level: AbilityConstant.MemoryLevel): void {
console.log(`Memory level: ${level}`);
// 内存低时释放缓存
}
}
Want 对象
组件通信的数据载体。
Want 结构
| 字段 | 类型 | 说明 |
|---|---|---|
bundleName | string | 目标包名 |
abilityName | string | 目标 ability 名称 |
moduleName | string |
...
Repository
mengfei0053/skillsParent repository
Repository Stats
Stars0
Forks0