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

鸿蒙5.0开发:Stage模型(ExtensionAbility组件) HarmonyOS中的ExtensionAbility组件是一种能够扩展系统功能的能力组件。 阅读详情

本文旨在深入探讨华为鸿蒙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 组件的具体使用方法和开发技巧。
请注意,由于鸿蒙系统版本更新较快,部分功能可能存在变动,请以最新版本官方文档为准。

Stage模型详解:UIAbility 与 ExtensionAbility 的区别与使用场景 HarmonyOS 5.0.0 或以上 HarmonyOS 5.0 起全面采用Stage 模型(取代旧的 FA 模型),是一个模块化、解耦、生命周期清晰的应用运行模型。每个模块(Module)由一个或多个 Ability 组成,每个 Ability 独立运行、按需加载。 阅读详情

相关推荐

HarmonyOS Next开发学习手册——ExtensionAbility

EmbeddedUIExtensionAbility需要和 EmbeddedComponent 一起配合使用,开发者可以在UIAbility的页面中通过EmbeddedComponent嵌入本应用的EmbeddedUIExtensionAbility提供的UI。EmbeddedUIExtensionAbility会在独立于UIAbility的进程中运行,完成其页面的布局和渲染。通常用于有进程隔离诉求的模块化开发场景。

maniuT的博客 1737

HarmonyOS 应用开发之ExtensionAbility组件

ExtensionAbility组件是基于特定场景(例如服务卡片、输入法等)提供的应用组件,以便满足更多的使用场景。每一个具体场景对应一个 ExtensionAbilityType,开发者只能使用(包括实现和访问)系统已定义的类型。各类型的ExtensionAbility组件均由相应的系统服务统一管理,例如InputMethodExtensionAbility组件由输入法管理服务统一管理。当前系统已定义的ExtensionAbility类型如下表所示。

maniuT的博客 1324

鸿蒙5.0实战案例:ExtensionAbility 组件扩展应用功能的舞台

鸿蒙系统的阶段模型为开发者提供了一个强大的舞台,而 UIAbility 组件是舞台上的主角,而 ExtensionAbility 组件则是舞台上的配角,负责扩展应用的功能。这意味着 ExtensionAbility 组件拥有独立的进程和内存空间,与其他组件隔离运行,提高了系统的安全性和稳定性。是华为鸿蒙系统中用于扩展应用功能的组件,它面向特定场景,例如服务卡片、输入法等,为开发者提供丰富的扩展能力。例如,输入法扩展组件由输入法管理服务拉起,服务卡片扩展组件由卡片管理服务拉起。

Maniu_666的博客 450

【鸿蒙软件开发】Stage模型开发概述应用/组件级配置

下图展示了Stage模型中的基本概念。下面我为大家一一讲解上方的内容在 Stage 模型中,有两种重要的组件:UIAbility 和 ExtensionAbility。这些组件是用于构建应用程序的重要构建块,每个都有自己的特点和功能。以上就是今天要讲的内容,本文介绍了Stage模型开发概述应用/组件级配置,如果还有不懂的可以去看官方文档,或者再看一遍文章。

m0_62599305的博客 1974

鸿蒙开发基础——ExtensionAbility组件

以InputMethodExtensionAbility组件为例进行说明,如下图所示,调用方应用发起对InputMethodExtensionAbility组件的调用,此时将先调用输入法管理服务,由输入法管理服务拉起InputMethodExtensionAbility组件,返回给调用方,同时开始管理其生命周期。所有类型的ExtensionAbility组件均不能被应用直接启动,而是由相应的系统管理服务拉起,以确保其生命周期受系统管控,使用时拉起,使用完销毁。

guangxishaoji的博客 1291

【鸿蒙基于API 13实战开发】—— ExtensionAbility组件

ExtensionAbility 组件是基于特定场景(例如服务卡片、输入法等)提供的应用组件,以便满足更多的使用场景。每一个具体场景对应一个 ExtensionAbilityType ,开发者只能使用(包括实现和访问)系统已定义的类型。各类型的ExtensionAbility组件均由相应的系统服务统一管理,例如 InputMethodExtensionAbility 组件由输入法管理服务统一管理。当前系统已定义的ExtensionAbility类型如下表所示。

shangkangba的博客 1105

HarmonyOS ExtensionAbility 组件:扩展应用功能的舞台

鸿蒙系统的阶段模型为开发者提供了一个强大的舞台,而 UIAbility 组件是舞台上的主角,而 ExtensionAbility 组件则是舞台上的配角,负责扩展应用的功能。这意味着 ExtensionAbility 组件拥有独立的进程和内存空间,与其他组件隔离运行,提高了系统的安全性和稳定性。是华为鸿蒙系统中用于扩展应用功能的组件,它面向特定场景,例如服务卡片、输入法等,为开发者提供丰富的扩展能力。例如,输入法扩展组件由输入法管理服务拉起,服务卡片扩展组件由卡片管理服务拉起。

CTrup的博客 1144

HarmonyOS核心知识点:ExtensionAbility组件

EmbeddedUIExtensionAbility 是EMBEDDED_UI类型的ExtensionAbility组件,提供了跨进程界面嵌入的能力。EmbeddedUIExtensionAbility需要和 EmbeddedComponent 一起配合使用,开发者可以在UIAbility的页面中通过EmbeddedComponent嵌入本应用的EmbeddedUIExtensionAbility提供的UI。

wuliusan5的博客 1078

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

华为鸿蒙系统的阶段模型为开发者提供了一个强大的舞台,而 UIAbility 组件是舞台上的主角,而 ExtensionAbility 组件则是舞台上的配角,负责扩展应用的功能。ExtensionAbility 是华为鸿蒙系统中用于扩展应用功能的组件,它面向特定场景,例如服务卡片、输入法等,为开发者提供丰富的扩展能力。 ExtensionAbility 组件的主要功能:ExtensionAbility 组件拥有完整的生命周期,包括以下几个状态: 开发者可以根据应用需求监听和处理 ExtensionAbil

duolala888的博客 1106

uniapp运行钉钉小程序

因项目原因,公司需要在钉钉里面开发小程序。之前用uniapp开发过app,H5,小程序。还真没尝试过钉钉小程序,今天就简单的记录下uniapp运行钉钉小程序中的过程。

YL 2919

Bochs源码分析 - 4: 使用ida来调试bochs

前言 bochs内部提供了一个调试器,但是这个命令行调试器相当难用,想找一个gui的debugger。第一次是在百度百科的bochs词条中介绍的peter-bochs-debugger调试器(java编写),但是后来发现ida也有一个bochs调试器,因为对ida比较熟悉,就选用此作为bochs调试器。 在配置过程中参考博客 https://blog.youkuaiyun.com/cssxn/article/details/90738498 中的配置,但是这是直接发布版本,拿源码编译...

WriteAnything_的博客 2755

鸿蒙OH实战开发:ExtensionAbility 组件——扩展应用功能的舞台

鸿蒙系统的阶段模型为开发者提供了一个强大的舞台,而 UIAbility 组件是舞台上的主角,而 ExtensionAbility 组件则是舞台上的配角,负责扩展应用的功能。这意味着 ExtensionAbility 组件拥有独立的进程和内存空间,与其他组件隔离运行,提高了系统的安全性和稳定性。是华为鸿蒙系统中用于扩展应用功能的组件,它面向特定场景,例如服务卡片、输入法等,为开发者提供丰富的扩展能力。例如,输入法扩展组件由输入法管理服务拉起,服务卡片扩展组件由卡片管理服务拉起。

pengjiadashaoye的博客 1260

[kriging](一)网上下载的kriging克里金的C++程序的初步调试

笔者在网上下载了一份克里金的C++程序,水平有限,正在逐步地调试中。 初步 克里金法现在在许多软件都已经有集成了,据笔者所知: arcgis : 看过有的arcgis培训视频里面简略介绍了里面的插值方法,有克里金。 surfer :笔者用过这个,效果很好。 gocad :听说有 landmark &jason :研究生时候用的专业的石油物探软件,里面有克里金法,万恶的开始。 pykrig...

FOREST优快云 5611

HarmonyOS 5 鸿蒙ExtensionAbility组件开发实战指南

鸿蒙Stage模型中的ExtensionAbility组件解析 ExtensionAbility是鸿蒙系统中面向特定场景的应用组件,专注于后台服务、系统集成和特殊功能等非UI场景。其核心设计理念包括场景专业化、系统集成、后台服务和安全隔离。ExtensionAbility包含多种类型:FormExtensionAbility用于开发服务卡片,WorkSchedulerExtensionAbility支持后台任务调度,UIExtensionAbility实现跨进程UI嵌入,而ShareExtensionAbi

haolove527的专栏 7336

物联网定位技术|实验报告|实验一 Wi-Fi指纹定位

全球定位系统是迄今为止应用最为成功的地位系统,具备高精度的定位能力,但在室内和高楼密布的城区等信号遮挡严重的密集环境中,由于接受机捕获不到足够强度的卫星信号,GPS的定位质量难以保证甚至无法完成定位,使其可用性受到严重制约。由于室内环境下都普及了WiFi,因此利用WiFi进行定位无需额外部署硬件设备,是一个非常节省成本的方法。

m0_57656758的博客 3356

Doris实战——结合Flink构建极速易用的实时数仓

Doris实战——结合Flink构建极速易用的实时数仓

爱吃辣条的博客 8231

鸿蒙开发5.0案例分析: ExtensionAbility 组件扩展应用功能

鸿蒙系统的阶段模型为开发者提供了一个强大的舞台,而 UIAbility 组件是舞台上的主角,而 ExtensionAbility 组件则是舞台上的配角,负责扩展应用的功能。这意味着 ExtensionAbility 组件拥有独立的进程和内存空间,与其他组件隔离运行,提高了系统的安全性和稳定性。是华为鸿蒙系统中用于扩展应用功能的组件,它面向特定场景,例如服务卡片、输入法等,为开发者提供丰富的扩展能力。例如,输入法扩展组件由输入法管理服务拉起,服务卡片扩展组件由卡片管理服务拉起。

2501_91726121的博客 713

信奥赛csp初赛高频考点【位运算】(详细解析)

信奥赛csp初赛高频考点【位运算】(详细解析)

王老师青少年编程 370

鸿蒙开发—HarmonyOS 应用开发之ExtensionAbility组件

ExtensionAbility组件是基于特定场景(例如服务卡片、输入法等)提供的应用组件,以便满足更多的使用场景。每一个具体场景对应一个 ExtensionAbilityType,开发者只能使用(包括实现和访问)系统已定义的类型。各类型的ExtensionAbility组件均由相应的系统服务统一管理,例如InputMethodExtensionAbility组件由输入法管理服务统一管理。当前系统已定义的ExtensionAbility类型如下表所示。

duoduola888的博客 746

YOLOv12改进策略【独家融合改进】| SPD-Conv+PPA 再次提升模型针对小目标的特征提取能力

SPD-Conv是一种新的 CNN 构建模块,用于替代传统 CNN 架构中使用的步长卷积(strided convolution)和池化(pooling)层,它由空间到深度(Space-to-depth,SPD)层和非步长卷积(non - strided convolution)层组成。

Limiiiing的博客 1028

手把手教你学Simulink——基于通信协议与标准的场景实例:卫星通信中的网络安全协议(IPSec)仿真

随着卫星通信在国防、金融、应急指挥、能源管网等关键领域的广泛应用,其安全性已成为系统设计的核心要求。然而,卫星链路具有广播特性、长距离传输、地面站分布广等特点,极易遭受窃听、篡改、重放、中间人攻击等网络威胁。传统的“信任链路层安全”已不足以应对现代网络攻击。为此,国际标准组织(如IETF、ETSI、CCSDS)推荐在卫星通信中部署协议,实现端到端的数据机密性、完整性、身份认证和抗重放保护。本文将手把手教你如何在中构建一个符合标准的仿真系统,涵盖从明文传输到加密隧道的完整安全链路建模。本文完整实现了。

MHD0815的博客 149

HarmonyOS实战开发:ExtensionAbility组件概述

ExtensionAbility组件是基于特定场景(例如服务卡片、输入法等)提供的应用组件,以便满足更多的使用场景。

2401_84194030的博客 1201

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

鸿蒙HarmonyOS应用开发 ExtensionAbility组件

摘要: ExtensionAbility是面向特定场景的组件,如服务卡片、输入法等,由系统服务统一管理。开发者只能使用系统预定义的类型,不同类型在实现、访问权限及沙箱隔离上有差异。例如,FormExtensionAbility允许三方实现但不允许访问,而InputMethodExtensionAbility允许三方实现和访问且独立沙箱运行。系统应用不受限制,可自由实现和访问所有类型。ExtensionAbility由系统服务管理生命周期,调用方无需关心组件销毁。同一应用内同类型ExtensionAbilit

sy7748的博客 1006

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

上一篇: 华为鸿蒙 UIAbility 组件:构建用户界面的舞台
下一篇: 华为鸿蒙 AbilityStage 组件容器:Stage模型的舞台中心
SameX-4869
博客等级 码龄18年 3354粉丝 657原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值