【中工开发者】深入理解鸿蒙应用级组件扩展本领(ExtensionAbility) ...

打印 上一主题 下一主题

主题 857|帖子 857|积分 2571

    在操纵系统或应用开发框架中,扩展本领(ExtensionAbility)是答应开发者为系统或应用添加新功能或服务的一种机制。每种扩展本领都有本身特定的用途、特点和实用范围。以下是对各类扩展本领的概述。 
一.扩展本领的概述
1. FormExtensionAbility

定义:用于实现服务卡片的相关本领,主要用于元服务开发。

用途:服务卡片通常用于快速展示信息或提供快速入口,例如天气预报、日历提醒等。

特点:支持自定义UI、数据更新和交互逻辑。

实用范围:实用于需要快速访问和展示信息的场景。

开发方法



  • 继承FormExtensionAbility类。
  • 实现生命周期方法,如onCreate、onDestroy等。
  • 在生命周期方法中实现UI和数据更新逻辑。
2. WorkSchedulerExtensionAbility

定义:用于实现后台及时性不高的任务,如后台不定期主动获取邮件等。

用途:处理需要在后台执行的周期性或延时任务。

特点:低功耗、机动性高、实用于非及时性任务。

实用范围:实用于邮件同步、数据备份、内容更新等后台任务。

开发方法



  • 继承WorkSchedulerExtensionAbility类。
  • 设置任务调治器,定义任务触发条件和执行逻辑。
  • 实现任务执行逻辑。
3. InputMethodExtensionAbility

定义:用于实现输入法应用的开发。

用途:为用户提供自定义的输入方式和交互体验。

特点:支持多种输入方式(如手写、语音、键盘等)、支持多语言输入。

实用范围:实用于需要特殊输入方式或输入体验的应用场景。

开发方法



  • 继承InputMethodExtensionAbility类。
  • 实现输入法相关接口和生命周期方法。
  • 定制输入方式和交互逻辑。
4. AccessibilityExtensionAbility

定义:用于实现无障碍扩展,如为视力障碍用户提供语言读屏幕功能等。

用途:提升应用的无障碍性,满足特殊用户群体的需求。

特点:支持语音输出、屏幕读取、操纵辅助等功能。

实用范围:实用于所有需要无障碍支持的应用场景。

开发方法



  • 继承AccessibilityExtensionAbility类。
  • 实现无障碍服务接口和生命周期方法。
  • 定制无障碍功能。
5. DriverExtensionAbility

定义:用于实现外接硬件模块扩展设备的本领。

用途:提供对外部硬件设备的支持和控制。

特点:支持多种硬件设备、驱动程序定制。

实用范围:实用于需要外接硬件设备扩展的应用场景。

开发方法



  • 继承DriverExtensionAbility类。
  • 实现设备驱动程序和接口。
  • 定制与硬件设备的交互逻辑。
6. ServiceExtensionAbility(系统应用专用)

定义:为系统应用提供服务本领,当前仅对系统应用开放。

用途:为系统应用提供特定服务或功能支持。

特点:高权限、专用性。

实用范围:仅实用于系统应用开发。

开发方法(不实用于一般应用):



  • 继承ServiceExtensionAbility类。
  • 实现服务接口和生命周期方法。
  • 提供系统级服务。
7. DataShareExtensionAbility(系统应用专用)

定义:用于提供数据共享本领,当前仅对系统应用开放。

用途:实现系统应用间的数据共享和交换。

特点:高安全性、数据同等性。

实用范围:仅实用于系统应用开发。

开发方法(不实用于一般应用):



  • 继承DataShareExtensionAbility类。
  • 实现数据共享接口和生命周期方法。
  • 提供数据共享服务。
开发方法总结


  • 继承相应的类:根据所需的扩展本领,继承对应的ExtensionAbility类。
  • 实现生命周期方法:在相应的生命周期方法中实现功能代码。
  • 遵照管理规则:遵照系统对扩展本领的管理规则,确保稳固性和安全性。
  • 系统调用和销毁:扩展本领的启动和销毁由系统管理服务负责,开发者无需直接操纵。
二.  在大多数系统中,扩展本领的调用不能由调用方直接进行,而是由相应的系统管理服务间接拉起的。系统管理服务负责控制扩展本领的生命周期,包括启动和销毁。以下是对该过程的扼要描述:



  • 调用方式:   

    • 调用方不能直接创建或销毁扩展本领。
    • 需要通过系统提供的接口或方法向系统管理服务发出请求。
    • 系统管理服务接收到请求后,会启动相应的扩展本领实例。
    • 利用完成后,系统管理服务会主动销毁扩展本领实例。

  • 示例场景:   

    • 用户点击一个按钮,请求显示一个表单扩展本领。
    • 系统管理服务接收到请求后,实例化表单扩展本领,并将其展示给用户。
    • 用户关闭表单后,系统管理服务销毁表单扩展本领实例。

   实现扩展应用组件

为了实现扩展应用组件,通常需要继承系统提供的基类,并实现特定的生命周期方法。以下是一个实现表单扩展本领的示例:

// 引入系统提供的基类

import { FormExtensionAbility } from '@system/extension-ability';

import { Want } from '@system/base';


// 定义并导出扩展本领类

export default class MyAbility extends FormExtensionAbility {

// 生命周期方法:当表单被添加到系统时调用

onAddForm(want: Want) {

// 可以在这里处理表单添加时的逻辑

console.log('Form added with want:', want);

// 示例:根据 want 参数设置表单内容

this.updateFormContent(want.parameters.content || 'Default Content');

}


// 生命周期方法:当表单被移除时调用

onRemoveForm(formId: string): void {

// 可以在这里处理表单移除时的逻辑

console.log('Form removed with ID:', formId);

// 示例:清理资源

this.cleanupResources();

}


// 自定义方法:更新表单内容

private updateFormContent(content: string): void {

// 具体实现更新表单内容的逻辑

console.log('Updating form content to:', content);

// 示例:通过某种方式更新UI

this.uiComponent.setContent(content);

}


// 自定义方法:清理资源

private cleanupResources(): void {

// 具体实现清理资源的逻辑

console.log('Cleaning up resources');

// 示例:释放内存或制止后台任务

}

}

 总结



  • 调用:扩展本领的调用由系统管理服务间接进行,调用方通过系统提供的接口请求相应的扩展本领。
  • 实现:扩展应用组件通过继承系统提供的基类,并实现特定的生命周期方法来实现。生命周期方法包括onAddForm(表单添加时调用)和onRemoveForm(表单移除时调用)。
三 .以下是对 HarmonyOS 应用历程模子的具体表明。
主历程(Main Process)



  • 定义:一个HarmonyOS应用中的所有 UIAbility、ServiceExtensionAbility 和 DataShareExtensionAbility 运行在同一个独立历程中,该历程被称为主历程。
  • 特点:   

    • 主历程是应用的核心,负责处理用户交互、服务扩展和数据共享等功能。
    • 主历程中的组件共享同一个应用上下文(ApplicationContext),便于数据共享和组件间的通讯。
    • 主历程的稳固性和性能直接影相应用的用户体验。

其他 ExtensionAbility 历程



  • 定义:在一个应用中,除 ServiceExtensionAbility 和 DataShareExtensionAbility 外,其他同一类型的所有 ExtensionAbility 运行在同一个独立历程中。
  • 特点:   

    • 这类历程用于运行特定类型的扩展本领,如表单扩展、任务扩展等。
    • 通过将相同类型的扩展本领放在同一个历程中,可以提高资源利用率和性能。
    • 这些历程与主历程通过历程间通讯(IPC)进行交互,确保数据的同步和同等性。

 系统 WebView 渲染历程



  • 定义:系统 WebView 提供了独立的渲染历程,用于加载和渲染网页内容。
  • 特点:   

    • 渲染历程与应用的主历程和其他扩展本领历程分离,确保网页内容的独立性和安全性。
    • 渲染历程利用独立的内存空间和资源,不会影相应用主历程的性能和稳固性。
    • 通过与主历程进行通讯,可以实现网页与应用之间的数据交换和交互。

总结:
各种扩展本领应用场景各不相同,差异比力大,不具有可比性,因此并不完全存在一个同一的扩展ExtensionAbility的开发模式 一些扩展本领不对平常开发者开放 历程间通讯开销较大,利用扩展本领时要留意历程模子

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

尚未崩坏

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表