OpenHarmony应用开发:ExtensionAbility组件

往期鸿蒙5.0全套实战文章必看:(文中附带全栈鸿蒙5.0学习资料)


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地理围栏扩展能力,用于提供地理围栏扩展的能力。

说明:

通常情况下,应用中(同一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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值