华为鸿蒙嵌入式 UI 扩展组件:跨越界限的舞台

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

在华为鸿蒙系统的舞台上,UIAbility 组件是主角,负责与用户进行交互,而嵌入式 UI 扩展组件则是舞台上的配角,负责扩展应用的功能,并实现跨越进程界限的界面嵌入,为用户带来更加丰富和便捷的交互体验。

一、嵌入式 UI 扩展组件:跨越界限的舞台

想象一下,你正在观看一场舞台剧,舞台上的演员正在表演,突然,舞台的另一边出现了一扇门,门打开后,另一个舞台上的演员出现在观众面前,并与观众进行互动。这就是嵌入式 UI 扩展组件所能实现的功能,它可以将另一个 UIAbility 的界面嵌入到当前 UIAbility 的页面中,实现跨越进程界限的界面嵌入,为用户带来更加丰富和便捷的交互体验。
嵌入式 UI 扩展组件的优势

  • 丰富的交互体验:嵌入式 UI 扩展组件可以提供丰富的交互功能,例如拖拽、缩放、旋转等,为用户提供良好的交互体验。
  • 灵活的界面布局:嵌入式 UI 扩展组件可以嵌入到当前 UIAbility 的页面中的任何位置,并可以根据需要进行调整,实现灵活的界面布局。
  • 安全可靠:嵌入式 UI 扩展组件运行在独立的进程中,与其他 UIAbility 的进程隔离,提高了系统的安全性和稳定性。
    嵌入式 UI 扩展组件就像是舞台上的配角,通过提供跨越进程界限的界面嵌入功能,为 UIAbility 组件提供更多的交互方式和功能支持

二、嵌入式 UI 扩展组件的开发步骤:搭建跨越界限的舞台

开发嵌入式 UI 扩展组件需要以下步骤

  1. 创建嵌入式 UI 扩展组件:在 DevEco Studio 工程中创建嵌入式 UI 扩展组件,并定义相应的生命周期回调函数,例如 onCreate、onSessionCreate 等。
  2. 配置嵌入式 UI 扩展组件:在 module.json5 配置文件中配置嵌入式 UI 扩展组件的相关信息,例如图标、描述等。
  3. 开发嵌入式 UI 扩展组件界面:使用 ArkUI 库开发嵌入式 UI 扩展组件的界面,并定义相应的交互功能,例如按钮、文本、图片等。
  4. 实现进程间通信:嵌入式 UI 扩展组件需要与当前 UIAbility 进行通信,可以采用数据共享机制或其他方式实现。
  5. 测试嵌入式 UI 扩展组件:在 DevEco Studio 中测试嵌入式 UI 扩展组件的功能和性能,确保其能够稳定运行。
    以下是一些创建嵌入式 UI 扩展组件的代码示例
import { EmbeddedUIExtensionAbility, UIExtensionContentSession, Want } from '@kit.AbilityKit';
export default class ExampleEmbeddedAbility extends EmbeddedUIExtensionAbility {
  onCreate() {
    console.log('[ExampleEmbeddedAbility] onCreate');
  }
  onSessionCreate(want: Want, session: UIExtensionContentSession) {
    console.log('[ExampleEmbeddedAbility] onSessionCreate, want: %s', JSON.stringify(want));
    let param: Record<string, UIExtensionContentSession> = {
      'session': session,
    };
    let storage: LocalStorage = new LocalStorage(param);
    session.loadContent('pages/extension', storage);
  }
  onSessionDestroy(session: UIExtensionContentSession) {
    console.log('[ExampleEmbeddedAbility] onSessionDestroy');
  }
  onForeground() {
    console.log('[ExampleEmbeddedAbility] onForeground');
  }
  onBackground() {
    console.log('[ExampleEmbeddedAbility] onBackground');
  }
  onDestroy() {
    console.log('[ExampleEmbeddedAbility] onDestroy');
  }
}

开发者可以根据应用需求开发嵌入式 UI 扩展组件,并实现跨越进程界限的界面嵌入功能

三、嵌入式 UI 扩展组件的使用方法:舞台上的表演

使用嵌入式 UI 扩展组件需要以下步骤

  1. 创建嵌入式 UI 组件实例:在 UIAbility 的页面中创建嵌入式 UI 组件实例,并指定嵌入的 UIAbility 的类型和参数。
  2. 加载嵌入式 UI 组件界面:使用嵌入式 UI 组件实例加载嵌入的 UIAbility 的界面。
  3. 与嵌入式 UI 组件交互:与嵌入的 UIAbility 进行交互,例如传递数据、控制界面等。
  4. 管理嵌入式 UI 组件生命周期:根据需要管理嵌入的 UIAbility 的生命周期,例如启动、停止、销毁等。
    以下是一些使用嵌入式 UI 扩展组件的代码示例
import { Want } from '@kit.AbilityKit';
let want: Want = {
  deviceId: '', // deviceId为空表示本设备
  bundleName: 'com.example.myapplication',
  abilityName: 'ExampleEmbeddedAbility',
  moduleName: 'entry', // moduleName非必选
  parameters: {
    // 自定义信息
  },
};
let embeddedComponent = new EmbeddedComponent(this.want, EmbeddedType.EMBEDDED_UI_EXTENSION);
this.$element.appendChild(embeddedComponent);

可以根据应用需求使用嵌入式 UI 扩展组件,并实现跨越进程界限的界面嵌入功能

四、嵌入式 UI 扩展组件的进程模型:舞台背后的舞台

嵌入式 UI 扩展组件运行在独立的进程中,与其他 UIAbility 的进程隔离,提高了系统的安全性和稳定性。
嵌入式 UI 扩展组件的进程模型

  • 独立的进程:嵌入式 UI 扩展组件运行在独立的进程中,与其他 UIAbility 的进程隔离。
  • 进程间通信:嵌入式 UI 扩展组件可以通过数据共享机制或其他方式与其他组件进行通信。
    自此,咱们可以根据应用需求选择合适的进程模型,实现嵌入式 UI 扩展组件的跨进程界面嵌入功能
    本篇博客介绍了华为鸿蒙嵌入式 UI 扩展组件的概念、功能、开发步骤、使用方法和进程模型。后续文章将深入讲解嵌入式 UI 扩展组件的具体使用方法和开发技巧
    请注意,由于鸿蒙系统版本更新较快,部分功能可能存在变动,请以最新版本官方文档为准
posted @ 2024-10-21 13:38  SameX  阅读(15)  评论(0编辑  收藏  举报