mirror of
https://gitee.com/openharmony/ability_ability_runtime
synced 2024-11-23 15:20:34 +00:00
15578f2188
Description:部件化不规范目录调整 Sig:SIG_ApplicaitonFramework Feature or Bugfix:Bugfix Binary Source:No Signed-off-by: dy_study <dingyao5@huawei.com> Change-Id: Ia64d76a96ab2779574fcbb6e880cd40ac6e64d3d
12 KiB
12 KiB
元能力子系统
简介
元能力子系统实现对Ability的运行及生命周期进行统一的调度和管理,应用进程能够支撑多个Ability,Ability具有跨应用进程间和同一进程内调用的能力。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分为FA(Feature Ability)和PA(Particle Ability)两种类型,其中FA支持Page Ability,PA支持Service Ability、Data Ability、以及FormAbility。
- 第二种形态为Stage模型。从API 9开始,Ability框架引入了Stage模型作为第二种应用框架形态,Stage模型将Ability分为Ability和ExtensionAbility两大类,其中ExtensionAbility又被扩展为ServiceExtensionAbility、FormExtensionAbility、DataShareExtensionAbility等等一系列ExtensionAbility,以便满足更多的使用场景。
Stage模型的设计,主要是为了方便开发者更加方便地开发出分布式环境下的复杂应用。下表给出了两种模型在设计上的差异:
对比 FA模型 Stage模型 开发方式 提供类Web的 api,UI开发与Stage模型一致。 提供面向对象的开发方式,UI开发与FA模型一致。 引擎实例 每个进程内的每个Ability独享一个JS VM引擎实例。 每个进程内的多个Ability实例共享一个JS VM引擎实例。 进程内对象共享 不支持。 支持。 包描述文件 使用config.json描述HAP包和组件信息,组件必须使用固定的文件名。 使用module.json描述HAP包和组件信息,可以指定入口文件名。 组件 提供PageAbility(页面展示),ServiceAbility(服务),DataAbility(数据分享), FormAbility(卡片)。 提供Ability(页面展示)、Extension(基于场景的服务扩展)。 除了上述设计上的差异外,对于开发者而言,两种模型的主要区别在于:
目录
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
相关仓
元能力子系统