鸿蒙-Ability Kit(程序框架服务)

247 阅读5分钟

Ability Kit(程序框架服务)提供了应用程序开发和运行的应用模型,是系统为开发者提供的应用程序所需能力的抽象提炼,它提供了应用程序必备的组件和运行机制。

为复杂应用而设计

  1. 多个应用组件共享同一个ArkTS引擎(运行ArkTS语言的虚拟机)实例,应用组件之间可以方便的共享对象和状态,同时减少复杂应用运行对内存的占用。
  2. 采用面向对象的开发方式,使得复杂应用代码可读性高、易维护性好、可扩展性强。
  3. 提供模块化能力开发的支持。

原生支持应用组件级的跨端迁移和多端协同

Stage模型实现了应用组件与UI解耦:

  1. 在跨端迁移场景下,系统在多设备的应用组件之间迁移数据/状态后,UI便可利用ArkUI的声明式特点,通过应用组件中保存的数据/状态恢复用户界面,便捷实现跨端迁移。
  2. 在多端协同场景下,应用组件具备组件间通信的RPC调用能力,天然支持跨设备应用组件的交互。

支持多设备和多窗口形态

应用组件管理和窗口管理在架构层面解耦:

  1. 便于系统对应用组件进行裁剪(无屏设备可裁剪窗口)。
  2. 便于系统扩展窗口形态。
  3. 在多设备(如桌面设备和移动设备)上,应用组件可使用同一套生命周期。

平衡应用能力和系统管控成本

Stage模型重新定义应用能力的边界,平衡应用能力和系统管控成本。

  1. 提供特定场景(如服务卡片、输入法)的应用组件,以便满足更多的使用场景。
  2. 规范化后台进程管理:为保障用户体验,Stage模型对后台应用进程进行了有序治理,应用程序不能随意驻留在后台,同时应用后台行为受到严格管理,防止恶意应用行为。 ArkUI: Ability Kit在UIAbility组件可以使用ArkUI提供的组件、事件、动效、状态管理等能力。 ArkTS:ArkTS提供了语言运行时相关能力。

应用模型的构成

  1. 应用组件

应用组件是应用的基本组成单位,是应用的运行入口。 应用组件会在不同的状态间切换,这些状态称为应用组件的生命周期。 开发者通过应用组件的生命周期回调感知应用的状态变化。 操作系统在运行期间通过配置文件创建应用组件的实例,并调度它的生命周期回调函数,从而执行开发者的代码。 2. 应用进程模型

应用进程模型定义应用进程的创建和销毁方式,以及进程间的通信方式。

  1. 应用线程模型

应用线程模型定义应用进程内线程的创建和销毁方式、主线程和UI线程的创建方式、线程间的通信方式。

  1. 应用任务管理模型(仅对系统应用开放)

应用任务管理模型定义任务(Mission)的创建和销毁方式,以及任务与组件间的关系。所谓任务,即用户使用一个应用组件实例的记录。 每次用户启动一个新的应用组件实例,都会生成一个新的任务。

  1. 应用配置文件

应用配置文件中包含应用配置信息、应用组件信息、权限信息、开发者自定义信息等,这些信息在编译构建、分发和运行阶段分别提供给编译工具、应用市场和操作系统使用。

应用模型

先后提供了两种应用模型:

  1. FA(Feature Ability)模型 API 7开始支持的模型,不再主推
  2. Stage模型 API 9开始新增的模型,是目前主推且会长期演进的模型。 Stage模型与FA模型最大的区别在于:Stage模型中,多个应用组件共享同一个ArkTS引擎实例;而FA模型中,每个应用组件独享一个ArkTS引擎实例。
模型内容FA模型Stage模型
应用组件image.png PageAbility组件:提供UI能力 ServiceAbility组件:提供后台服务能力 DataAbility组件:提供数据分享能力image.png UIAbility组件:提供UI能力 ExtensionAbility组件:提供特定场景扩展能力
进程模型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信息、应用组件信息