harmony 鸿蒙ExtensionAbility组件

  • 2022-12-13
  • 浏览 (1672)

ExtensionAbility组件

ExtensionAbility组件是一种面向特定场景的应用组件。每一个具体场景对应一个不同类型的ExtensionAbility,例如用于卡片场景的FormExtensionAbility,用于输入法场景的InputMethodExtensionAbility,用于延时任务场景的WorkSchedulerExtensionAbility等。开发者通过使用不同类型的ExtensionAbility组件,可以扩展和丰富应用功能,更好地与其他应用或系统开展交互。

不同类型ExtensionAbility组件均由系统定义,且通常由相应的系统服务统一管理(例如InputMethodExtensionAbility组件由输入法管理服务统一管理)。开发者不能直接继承ExtensionAbility组件,只能使用(包括实现或访问)已定义的ExtensionAbility类型

ExtensionAbility类型说明

当前系统已定义的ExtensionAbility类型如下表所示。

说明:

  • “是否允许三方应用实现”是指:三方应用能否继承该类型ExtensionAbility实现自己的业务逻辑。
  • “是否有独立Extension沙箱”是指:该类型ExtensionAbility的沙箱是否与主应用沙箱相对独立、不可互相访问。
ExtensionAbility类型 功能描述 是否允许三
方应用实现
是否有独立
Extension沙箱
FormExtensionAbility 卡片扩展能力,用于提供服务卡片的相关能力。
WorkSchedulerExtensionAbility 延时任务扩展能力,用于提供延迟任务的相关能力。
InputMethodExtensionAbility 输入法扩展能力,用于实现输入法应用的开发。
ServiceExtensionAbility 后台服务扩展能力,提供后台运行并对外提供相应能力。
三方应用可以连接该ExtensionAbility,并进行通信。
AccessibilityExtensionAbility 无障碍服务扩展能力,支持访问与操作前台界面。
DataShareExtensionAbility 数据共享扩展能力,用于对外提供数据读写服务。
三方应用可以连接该ExtensionAbility,进行数据读写。
StaticSubscriberExtensionAbility 静态广播扩展能力,用于处理静态事件,比如开机事件。三方应用无法访问。
WallpaperExtensionAbility 壁纸扩展能力,用于实现桌面壁纸。三方应用无法访问。
BackupExtensionAbility 数据备份扩展能力,用于提供备份及恢复应用数据的能力。
WindowExtensionAbility 界面组合扩展能力,允许系统应用进行跨应用的界面拉起和嵌入。三方应用无法访问。
EnterpriseAdminExtensionAbility 企业设备管理扩展能力,提供企业管理时处理管理事件的能力,
比如设备上应用安装事件、锁屏密码输入错误次数过多事件等。
PrintExtensionAbility 文件打印扩展能力,提供应用打印照片、文档等办公场景。
ShareExtensionAbility 分享扩展组件,用于提供分享模板服务扩展的能力。
DriverExtensionAbility 驱动扩展能力,用于提供驱动相关扩展框架
ActionExtensionAbility 自定义服务扩展能力,为开发者提供基于UIExtension的自定义操作业务模板。
AdsServiceExtensionAbility 广告服务扩展能力,对外提供后台自定义广告业务服务。
EmbeddedUIExtensionAbility 嵌入式UI扩展能力,提供跨进程界面嵌入的能力。
FenceExtensionAbility 地理围栏扩展能力,用于提供地理围栏扩展的能力。
DistributedExtensionAbility 分布式扩展能力,提供分布式创建、销毁、连接的生命周期回调。
AppServiceExtensionAbility 应用后台服务扩展能力,提供应用后台服务的创建、销毁、连接、断开等生命周期回调。

说明:

通常情况下,应用中(同一Bundle名称)所有同一类型的ExtensionAbility均运行在同一个独立进程。以下为例外场景:

  • ServiceExtensionAbility(仅系统应用涉及)、DataShareExtensionAbility(仅系统应用涉及)与所有UIAbility均运行在同一个独立进程(主进程)。
  • UIExtensionAbility以及继承该类型的ExtensionAbility可以通过module.json5配置文件中的extensionProcessMode字段,配置进程运行模式。

访问指定类型的ExtensionAbility组件

所有类型的ExtensionAbility组件均不能被应用直接启动,而是由相应的系统管理服务拉起,以确保其生命周期受系统管控,使用时拉起,使用完销毁。ExtensionAbility组件的调用方无需关心目标ExtensionAbility组件的生命周期。

InputMethodExtensionAbility组件为例进行说明,如下图所示,调用方应用发起对InputMethodExtensionAbility组件的调用,此时将先调用输入法管理服务,由输入法管理服务拉起InputMethodExtensionAbility组件,返回给调用方,同时开始管理其生命周期。

图1 使用InputMethodExtensionAbility组件

ExtensionAbility-start

实现指定类型的ExtensionAbility组件

以实现卡片FormExtensionAbility为例进行说明。卡片框架提供了FormExtensionAbility基类,开发者通过派生此基类(如MyFormExtensionAbility),实现回调(如创建卡片的onCreate()回调、更新卡片的onUpdateForm()回调等)来实现具体卡片功能,具体见开发指导见服务卡片

卡片FormExtensionAbility实现方不用关心使用方何时去请求添加、删除卡片,FormExtensionAbility实例及其所在的ExtensionAbility进程的整个生命周期,都是由卡片管理系统服务FormManagerService进行调度管理。

form_extension

你可能感兴趣的鸿蒙文章

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

harmony 鸿蒙获取应用异常退出原因

harmony 鸿蒙UIAbility备份恢复

harmony 鸿蒙使用显式Want启动应用组件

harmony 鸿蒙Ability Kit简介

harmony 鸿蒙AbilityStage组件容器

harmony 鸿蒙访问DataAbility

harmony 鸿蒙FA模型访问Stage模型DataShareExtensionAbility

harmony 鸿蒙常见action与entities(不推荐使用)

harmony 鸿蒙API切换概述

0  赞