Ability Kit(程序框架服务)提供了应用程序开发和运行的应用模型,是系统为开发者提供的应用程序所需能力的抽象提炼,它提供了应用程序必备的组件和运行机制。
为复杂应用而设计
- 多个应用组件共享同一个ArkTS引擎(运行ArkTS语言的虚拟机)实例,应用组件之间可以方便的共享对象和状态,同时减少复杂应用运行对内存的占用。
- 采用面向对象的开发方式,使得复杂应用代码可读性高、易维护性好、可扩展性强。
- 提供模块化能力开发的支持。
原生支持应用组件级的跨端迁移和多端协同
Stage模型实现了应用组件与UI解耦:
- 在跨端迁移场景下,系统在多设备的应用组件之间迁移数据/状态后,UI便可利用ArkUI的声明式特点,通过应用组件中保存的数据/状态恢复用户界面,便捷实现跨端迁移。
- 在多端协同场景下,应用组件具备组件间通信的RPC调用能力,天然支持跨设备应用组件的交互。
支持多设备和多窗口形态
应用组件管理和窗口管理在架构层面解耦:
- 便于系统对应用组件进行裁剪(无屏设备可裁剪窗口)。
- 便于系统扩展窗口形态。
- 在多设备(如桌面设备和移动设备)上,应用组件可使用同一套生命周期。
平衡应用能力和系统管控成本
Stage模型重新定义应用能力的边界,平衡应用能力和系统管控成本。
- 提供特定场景(如服务卡片、输入法)的应用组件,以便满足更多的使用场景。
- 规范化后台进程管理:为保障用户体验,Stage模型对后台应用进程进行了有序治理,应用程序不能随意驻留在后台,同时应用后台行为受到严格管理,防止恶意应用行为。 ArkUI: Ability Kit在UIAbility组件可以使用ArkUI提供的组件、事件、动效、状态管理等能力。 ArkTS:ArkTS提供了语言运行时相关能力。
应用模型的构成
- 应用组件
应用组件是应用的基本组成单位,是应用的运行入口。 应用组件会在不同的状态间切换,这些状态称为应用组件的生命周期。 开发者通过应用组件的生命周期回调感知应用的状态变化。 操作系统在运行期间通过配置文件创建应用组件的实例,并调度它的生命周期回调函数,从而执行开发者的代码。 2. 应用进程模型
应用进程模型定义应用进程的创建和销毁方式,以及进程间的通信方式。
- 应用线程模型
应用线程模型定义应用进程内线程的创建和销毁方式、主线程和UI线程的创建方式、线程间的通信方式。
- 应用任务管理模型(仅对系统应用开放)
应用任务管理模型定义任务(Mission)的创建和销毁方式,以及任务与组件间的关系。所谓任务,即用户使用一个应用组件实例的记录。 每次用户启动一个新的应用组件实例,都会生成一个新的任务。
- 应用配置文件
应用配置文件中包含应用配置信息、应用组件信息、权限信息、开发者自定义信息等,这些信息在编译构建、分发和运行阶段分别提供给编译工具、应用市场和操作系统使用。
应用模型
先后提供了两种应用模型:
- FA(Feature Ability)模型 API 7开始支持的模型,不再主推
- Stage模型 API 9开始新增的模型,是目前主推且会长期演进的模型。 Stage模型与FA模型最大的区别在于:Stage模型中,多个应用组件共享同一个ArkTS引擎实例;而FA模型中,每个应用组件独享一个ArkTS引擎实例。
| 模型内容 | FA模型 | Stage模型 |
|---|---|---|
| 应用组件 | ||
| 进程模型 | 1. 主进程 2. 渲染进程 | 1. 主进程 2. ExtensionAbility进程 3. 渲染进程 |
| 线程模型 | 1. ArkTS引擎的创建: 一个进程可以运行多个应用组件实例,每个应用组件实例运行在单独的ArkTs引擎实例中 2. 线程模型:每个ArkTS引擎实例在一个非主线程上创建,主线程没有ArkTS引擎实例 3. 进程内对象不共享 | 1. ArkTS引擎的创建:一个进程可以运行多个应用组件实例,所有应用组件实例共享一个ArkTS引擎实例 2. 线程模型:ArkTS引擎实例在主线程上创建 3. 进程内对象共享 |
| 应用配置文件 | config.json描述应用信息、HAP信息和应用组件信息 | app.json5描述应用信息,module.json5描述HAP信息、应用组件信息 |