ability_ability_runtime/README_zh.md
dy_study 15578f2188 IssueNo:#I5FM6S
Description:部件化不规范目录调整
Sig:SIG_ApplicaitonFramework
Feature or Bugfix:Bugfix
Binary Source:No

Signed-off-by: dy_study <dingyao5@huawei.com>
Change-Id: Ia64d76a96ab2779574fcbb6e880cd40ac6e64d3d
2022-07-05 17:15:19 +08:00

12 KiB
Raw Blame History

元能力子系统

简介

元能力子系统实现对Ability的运行及生命周期进行统一的调度和管理应用进程能够支撑多个AbilityAbility具有跨应用进程间和同一进程内调用的能力。Ability管理服务统一调度和管理应用中各Ability并对Ability的生命周期变更进行管理。

元能力子系统架构图说明:

  • Ability Kit为Ability的运行提供基础的运行环境支撑。Ability是系统调度应用的最小单元是能够完成一个独立功能的组件一个应用可以包含一个或多个Ability。

  • Ability管理服务AbilityManagerService用于协调各Ability运行关系、及对生命周期进行调度的系统服务。

    • 连接管理模块AbilityConnectManager是Ability管理服务对Service类型Ability连接管理的模块。
    • 数据管理模块DataAbilityManager是Ability管理服务对Data类型Ability管理的模块。
    • App管理服务调度模块AppScheduler提供Ability管理服务对用户程序管理服务进行调度管理的能力。
    • Ability调度模块AbilityScheduler提供对Ability进行调度管理的能力。
    • 生命周期调度模块LifecycleDeal是Ability管理服务对Ability的生命周期事件进行管理调度的模块。
  • Ability框架模型结构具有两种框架形态

    • 第一种形态为FA模型。API 8及其更早版本的应用程序只能使用FA模型进行开发。 FA模型将Ability分为FAFeature Ability和PAParticle Ability两种类型其中FA支持Page AbilityPA支持Service Ability、Data Ability、以及FormAbility。
    • 第二种形态为Stage模型。从API 9开始Ability框架引入了Stage模型作为第二种应用框架形态Stage模型将Ability分为Ability和ExtensionAbility两大类其中ExtensionAbility又被扩展为ServiceExtensionAbility、FormExtensionAbility、DataShareExtensionAbility等等一系列ExtensionAbility以便满足更多的使用场景。

    Stage模型的设计主要是为了方便开发者更加方便地开发出分布式环境下的复杂应用。下表给出了两种模型在设计上的差异

    对比 FA模型 Stage模型
    开发方式 提供类Web的 apiUI开发与Stage模型一致。 提供面向对象的开发方式UI开发与FA模型一致。
    引擎实例 每个进程内的每个Ability独享一个JS VM引擎实例。 每个进程内的多个Ability实例共享一个JS VM引擎实例。
    进程内对象共享 不支持。 支持。
    包描述文件 使用config.json描述HAP包和组件信息组件必须使用固定的文件名。 使用module.json描述HAP包和组件信息可以指定入口文件名。
    组件 提供PageAbility(页面展示)ServiceAbility(服务)DataAbility(数据分享), FormAbility(卡片)。 提供Ability(页面展示)、Extension(基于场景的服务扩展)。

    除了上述设计上的差异外,对于开发者而言,两种模型的主要区别在于:

    • Ability类型存在差异

      favsstage

    • Ability生命周期存在差异

      lifecycle

目录

foundation/ability/ability_runtime  #ability_runtime元能力运行时部件
├── frameworks
│   ├── js
│   │   └── napi					# ability_runtime的napi代码实现
│   └── native 					    # ability_runtime的核心代码实现
├── interfaces
│   ├── inner_api 				    # ability_runtime的系统内部件间接口
│   └── kits
│       └── native				    # ability_runtime的对外接口  
├── services
│   ├── abilitymgr				    # Ability管理服务框架代码
│   ├── appmgr					    # Ability管理服务框架代码
│   ├── common					    # 日志组件目录
│   ├── dataobsmgr				    # DataAbilityObserver管理服务框架代码
│   └── uripermmge				    # UriPermission管理服务框架代码
├── test							# 测试目录
└── tools						    # aa命令工具代码目录

foundation/ability/ability_base     # ability_base元能力基础部件
├── frameworks
│   └── js
│       └── napi					# ability_base的napi代码实现
│   └── native 					    # ability_base的核心代码实现
├── interfaces
│   └── inner_api 				    # ability_base的系统内部件间接口 
└── test							# 测试目录

foundation/ability/form_fwk     # form_fwk卡片运行时部件
├── frameworks
│   └── js
│       └── napi					# form_fwk的napi代码实现
├── interfaces
│   ├── inner_api 				    # form_fwk的系统内部件间接口 
│   └── kits
│       └── native				    # form_fwk的对外接口  
├── services                        # form管理服务框架代码
└── test							# 测试目录

foundation/ability/idl_tool         # idl工具部件
├── ast                             # idl语法解析定义代码
├── codegen                         # 跨进程通信模板生成模块代码
├── metadata                        # matedata自定义数据解析模块代码
├── parser                          # idl解析模块代码
├── test                            # 测试目录
└── util					        # 公共方法代码

使用说明

启动Abiltiy

启动新的ability(callback形式)

  • startAbility参数描述
名称 读写属性 类型 必填 描述
parameter 读写 StartAbilityParameter 表示被启动的Ability
callback 只读 AsyncCallback 被指定的回调方法
  • StartAbilityParameter类型说明
名称 读写属性 类型 必填 描述
want 读写 want 表示需要包含有关目标启动能力的信息
abilityStartSetting 只读 string 指示启动能力中使用的特殊启动设置
  • want类型说明
名称 读写属性 类型 必填 描述
deviceId 读写 string 设备id
bundleName 读写 string Bundle名
abilityName 读写 string Ability 名
uri 读写 string 请求中URI的描述
type 读写 string Want中类型的说明
flags 读写 number Want中标志的选项必填
action 读写 string Want中对操作的描述
parameters 读写 {[key: string]: any} Want中WantParams对象的描述
entities 读写 string 对象中实体的描述
moduleName9+ 读写 string Ability所属的模块module名称
  • 返回值

    void

  • 示例

import featureAbility from '@ohos.ability.featureAbility'
function addSlotsCallBack(err) {
	console.info("==========================>startAbility=======================>");
}
featureAbility.startAbility(
        {
        want:
        {
            action: "",
            entities: [""],
            type: "",
            options: {
                // indicates the grant to perform read operations on the URI
                authReadUriPermission: true,
                // indicates the grant to perform write operations on the URI
                authWriteUriPermission: true,
                // support forward want result to origin ability
                abilityForwardResult: true,
                // used for marking the ability start-up is triggered by continuation
                abilityContinuation: true,
                // specifies whether a component does not belong to ohos
                notOhosComponent: true,
                // specifies whether an ability is started
                abilityFormEnabled: true,
                // indicates the grant for possible persisting on the URI.
                authPersistableUriPermission: true,
                // indicates the grant for possible persisting on the URI.
                authPrefixUriPermission: true,
                // support distributed scheduling system start up multiple devices
                abilitySliceMultiDevice: true,
                // indicates that an ability using the service template is started regardless of whether the
                // host application has been started.
                startForegroundAbility: true,
                // install the specified ability if it's not installed.
                installOnDemand: true,
                // return result to origin ability slice
                abilitySliceForwardResult: true,
                // install the specified ability with background mode if it's not installed.
                installWithBackgroundMode: true
            },
            deviceId: "",
            bundleName: "com.example.startability",
            abilityName: "com.example.startability.MainAbility",
            uri: ""
        },
    },
  );
)

其他功能开发指导可参考示例文档

aa命令

aa help

命令 描述
aa help 显示aa命令帮助信息

aa start

命令 描述
aa start [-d ] -a -b [-D] 启动ability设备ID 可空
示例:
aa start -d 12345 -a com.ohos.app.MainAbility -b com.ohos.app -D

aa dump

命令 描述
aa dump -a 打印栈中的Ability信息

aa force-stop

命令 描述
aa force-stop 强制停止application
示例:
aa force-stop com.ohos.app

相关仓

元能力子系统

ability_base

ability_runtime

form_fwk

idl_tool