首页 > 其他分享 >华为鸿蒙 ExtensionAbility 组件:扩展应用功能的舞台

华为鸿蒙 ExtensionAbility 组件:扩展应用功能的舞台

时间:2024-10-21 13:33:49浏览次数:1  
标签:ExtensionAbility 服务 鸿蒙 0x0000 华为 testTag hilog 组件

本文旨在深入探讨华为鸿蒙HarmonyOS Next系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。

华为鸿蒙系统的阶段模型为开发者提供了一个强大的舞台,而 UIAbility 组件是舞台上的主角,而 ExtensionAbility 组件则是舞台上的配角,负责扩展应用的功能。

一、ExtensionAbility 组件的类型和功能

ExtensionAbility 是华为鸿蒙系统中用于扩展应用功能的组件,它面向特定场景,例如服务卡片、输入法等,为开发者提供丰富的扩展能力。
ExtensionAbility 组件的主要功能

  • 提供扩展服务:ExtensionAbility 组件可以提供各种扩展服务,例如数据共享、服务卡片、输入法等。
  • 与 UIAbility 交互:ExtensionAbility 组件可以与 UIAbility 进行交互,例如传递数据、启动页面等。
  • 生命周期管理:ExtensionAbility 组件拥有完整的生命周期,包括创建、启动、运行、停止和销毁等状态,开发者可以监听这些生命周期事件并进行相应的处理。
  • 数据同步:ExtensionAbility 组件可以使用多种方式与其他组件进行数据同步,例如 EventHub、AppStorage、LocalStorage 等。
    ExtensionAbility 组件就像是舞台上的配角,通过提供各种扩展服务,为 UIAbility 组件提供更多的功能和支持

二、ExtensionAbility 组件的生命周期管理

ExtensionAbility 组件拥有完整的生命周期,包括以下几个状态:

  • Create:ExtensionAbility 实例创建完成,系统调用 onCreate 回调。
  • Foreground:ExtensionAbility 实例切换到前台,系统调用 onForeground 回调。
  • Background:ExtensionAbility 实例切换到后台,系统调用 onBackground 回调。
  • Destroy:ExtensionAbility 实例销毁,系统调用 onDestroy 回调。
    以下是一些与 ExtensionAbility 组件生命周期相关的代码示例
import { ExtensionAbility, Want } from '@kit.AbilityKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
export default class ServiceExtAbility extends ServiceExtensionAbility {
  onCreate(want: Want) {
    // 后台服务初始化
    hilog.info(0x0000, 'testTag', '%{public}s', 'ServiceExtAbility onCreate');
  }
  onForeground() {
    // 后台服务切换到前台
    hilog.info(0x0000, 'testTag', '%{public}s', 'ServiceExtAbility onForeground');
  }
  onBackground() {
    // 后台服务切换到后台
    hilog.info(0x0000, 'testTag', '%{public}s', 'ServiceExtAbility onBackground');
  }
  onDestroy() {
    // 后台服务销毁
    hilog.info(0x0000, 'testTag', '%{public}s', 'ServiceExtAbility onDestroy');
  }
}

开发者可以根据应用需求监听和处理 ExtensionAbility 组件的生命周期事件,进行资源管理、数据同步等操作

三、ExtensionAbility 组件的访问方式

ExtensionAbility 组件不能被直接启动,而是由相应的系统服务拉起。例如,输入法扩展组件由输入法管理服务拉起,服务卡片扩展组件由卡片管理服务拉起。
开发者可以通过以下方式访问 ExtensionAbility 组件

  • 系统服务:通过系统提供的接口调用相应的系统服务,例如输入法管理服务、卡片管理服务等。
  • Intent:通过 Intent 机制启动对应的 ExtensionAbility 组件。
  • 数据共享:通过数据共享机制与其他组件共享数据。
    以下是一些使用 Intent 启动 ExtensionAbility 组件的代码示例
import { Want } from '@kit.AbilityKit';
let want: Want = {
  deviceId: '', // deviceId为空表示本设备
  bundleName: 'com.example.myapplication',
  abilityName: 'FormExtAbility',
  moduleName: 'entry', // moduleName非必选
  parameters: {
    // 自定义信息
  },
};
this.context.startAbility(want).then(() => {
  hilog.info(0x0000, 'testTag', 'Succeeded in starting ExtensionAbility.');
}).catch((err: BusinessError) => {
  hilog.error(0x0000, 'testTag', `Failed to start ExtensionAbility. Code is ${err.code}, message is ${err.message}`);
});

开发者可以根据应用需求选择合适的访问方式,实现与 ExtensionAbility 组件的交互和数据同步

四、ExtensionAbility 组件的独立沙箱运行

从 API 12 开始,部分 ExtensionAbility 组件默认运行在独立的沙箱环境中。这意味着 ExtensionAbility 组件拥有独立的进程和内存空间,与其他组件隔离运行,提高了系统的安全性和稳定性。
独立沙箱运行对 ExtensionAbility 组件的影响

  • 进程隔离:ExtensionAbility 组件运行在独立的进程中,与其他组件的进程隔离,提高了系统的安全性。
  • 内存隔离:ExtensionAbility 组件拥有独立的内存空间,与其他组件的内存隔离,避免了内存泄漏和内存竞争等问题。
  • 权限隔离:ExtensionAbility 组件拥有独立的权限配置,与其他组件的权限隔离,提高了系统的安全性。
    开发者可以根据应用需求选择是否开启独立沙箱运行,例如对于安全性要求较高的 ExtensionAbility 组件,建议开启独立沙箱运行

五、ExtensionAbility 组件的启动规则

ExtensionAbility 组件的启动规则与 UIAbility 组件有所不同。例如,ExtensionAbility 组件不能被显式 Want 启动,也不能通过 Intent 启动 UIAbility 组件。
以下是一些与 ExtensionAbility 组件启动规则相关的代码示例

import { Want } from '@kit.AbilityKit';
let want: Want = {
  deviceId: '', // deviceId为空表示本设备
  bundleName: 'com.example.myapplication',
  abilityName: 'FormExtAbility',
  moduleName: 'entry', // moduleName非必选
  parameters: {
    // 自定义信息
  },
};
this.context.startAbility(want).then(() => {
  hilog.info(0x0000, 'testTag', 'Succeeded in starting ExtensionAbility.');
}).catch((err: BusinessError) => {
  hilog.error(0x0000, 'testTag', `Failed to start ExtensionAbility. Code is ${err.code}, message is ${err.message}`);
});

我们需要根据 ExtensionAbility 组件的类型和功能选择合适的启动方式,例如使用系统服务、Intent 或数据共享等
本篇博客介绍了华为鸿蒙 ExtensionAbility 组件的类型、功能、生命周期管理、访问方式、独立沙箱运行和启动规则。后续文章将深入讲解 ExtensionAbility 组件的具体使用方法和开发技巧
请注意,由于鸿蒙系统版本更新较快,部分功能可能存在变动,请以最新版本官方文档为准

标签:ExtensionAbility,服务,鸿蒙,0x0000,华为,testTag,hilog,组件
From: https://www.cnblogs.com/samex/p/18489312

相关文章

  • 华为鸿蒙 UIAbility 组件:构建用户界面的舞台
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。华为鸿蒙系统的阶段模型为开发者提供了......
  • 华为鸿蒙 Want:应用组件之间信息传递的桥梁
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。在华为鸿蒙系统中,应用组件之间的信息传......
  • 华为鸿蒙嵌入式 UI 扩展组件:跨越界限的舞台
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。在华为鸿蒙系统的舞台上,UIAbility组件......
  • 华为鸿蒙 AbilityStage 组件容器:Stage模型的舞台中心
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。华为鸿蒙系统的阶段模型为开发者提供了......
  • 内置免费图标!SymbolGlyphs|鸿蒙动效开发笔记 04|Extras
    这篇笔记将介绍HarmonyOSNEXT应用开发里非常好用的官方内置图标库和原生图标组件。妙用这套组合拳可以解决几乎一切UI设计资源上的问题,并且将开发的App与原生鸿蒙风格完美契合!补充资料:官方图标库网站:HarmonyOSSymbol主题图标库(不全)https://developer.huawei.co......
  • 鸿蒙开发 四十九 数组
    1、数组的创建方式数组:接口范型的形式提供,接口的源码是:interfaceArray<T>,实际开发中数组用得非常多,创建数组的方式有:1、语法格式:let数组名:Array<数组类型>=[],实例:letarr1:Array<IObject>=[],这里申明IObject的数组,2,new关键字创建数组,语法格式:let数组名字:Arra......
  • 华为OD机试真题---勾股数元组
    华为OD机试中的“勾股数元组”题目是一道考察编程能力、算法基础和数学知识的题目。以下是对该题目的详细解析:一、题目描述如果三个正整数(a,b,c)满足a²+b²=c²的关系,则称(a,b,c)为勾股数。为了探索勾股数的规律,题目要求找到给定范围[N,M]内所有的勾股数元组,其中勾......
  • 鸿蒙ArkWeb 组件多媒体探究:从视频到音频
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。引言ArkWeb是华为鸿蒙系统提供的一......
  • 华为鸿蒙 Web 组件:高效调试策略
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。引言调试是软件开发过程中不可或缺的......
  • 2024年华为OD机试真题-勾股数元组-Java-OD统一考试(E卷)
    最新华为OD机试考点合集:华为OD机试2024年真题题库(E卷+D卷+C卷)_华为od机试题库-CSDN博客     每一题都含有详细的解题思路和代码注释,精编c++、JAVA、Python三种语言解法。帮助每一位考生轻松、高效刷题。订阅后永久可看,发现新题及时跟新。题目描述:如果3个正整数(a,b,c)......