harmony 鸿蒙ExtensionAbility组件
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组件
以实现卡片FormExtensionAbility为例进行说明。卡片框架提供了FormExtensionAbility基类,开发者通过派生此基类(如MyFormExtensionAbility),实现回调(如创建卡片的onCreate()回调、更新卡片的onUpdateForm()回调等)来实现具体卡片功能,具体见开发指导见服务卡片。
卡片FormExtensionAbility实现方不用关心使用方何时去请求添加、删除卡片,FormExtensionAbility实例及其所在的ExtensionAbility进程的整个生命周期,都是由卡片管理系统服务FormManagerService进行调度管理。
你可能感兴趣的鸿蒙文章
harmony 鸿蒙FA模型访问Stage模型DataShareExtensionAbility
- 所属分类: 后端技术
- 本文标签:
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦