openharmony-ability-kit

from mengfei0053/skills

skills

0 stars0 forksUpdated Jan 11, 2026
npx skills add https://github.com/mengfei0053/skills --skill openharmony-ability-kit

SKILL.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 版本用途导入语句
UIAbility9+UI 应用组件import { UIAbility } from '@kit.AbilityKit'
AbilityStage9+模块级管理器import { AbilityStage } from '@kit.AbilityKit'
Want9+组件通信import { Want } from '@kit.AbilityKit'
common (Context)9+Context APIimport { common } from '@kit.AbilityKit'
bundleManager9+包查询import { bundleManager } from '@kit.AbilityKit'
wantAgent9+Want 封装import { wantAgent } from '@kit.AbilityKit'
appManager9+应用生命周期管理import { appManager } from '@kit.AbilityKit'
AbilityConstant9+Ability 常量import { AbilityConstant } from '@kit.AbilityKit'
Configuration9+系统配置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');
  }
}

启动类型

类型说明使用场景
SINGLETON0单实例主入口、设置页
MULTITON1多实例文档编辑器
SPECIFIED2开发者控制自定义实例管理

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 结构

字段类型说明
bundleNamestring目标包名
abilityNamestring目标 ability 名称
moduleNamestring

...

Read full content

Repository Stats

Stars0
Forks0