• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# EmbeddedUIExtensionAbility
2
3### 介绍
4
5本示例主要展示了[EmbeddedUIExtensionAbility](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-ability-kit/js-apis-app-ability-embeddedUIExtensionAbility.md)的提供方与拉起方的创建与使用。开发者可以在UIAbility的页面中通过EmbeddedComponent嵌入本应用的EmbeddedUIExtensionAbility提供的UI。EmbeddedUIExtensionAbility会在独立于UIAbility的进程中运行,完成其页面的布局和渲染。通常用于有进程隔离诉求的模块化开发场景。
6
7### 效果预览
8
9| 主页                             |
10| ------------------------------- |
11| ![main.png](screenshots/main.png) |
12
13### 使用说明:
14
151. 当前EmbeddedUIExtensionAbility和EmbeddedComponent仅支持在拥有多进程配置的设备上使用。
162. EmbeddedComponent只能在UIAbility中使用,且被拉起的EmbeddedUIExtensionAbility需与UIAbility属于同一应用。
173. EmbeddedUIExtensionAbility通过UIExtensionContext和UIExtensionContentSession提供相关能力。本文描述中称被启动的EmbeddedUIExtensionAbility为提供方,称启动EmbeddedUIExtensionAbility的EmbeddedComponent组件为使用方。
18
19### 工程目录
20
21```
22entry/src/main/ets/
23|---entryability
24|   |---EntryAbility.ts
25|---pages
26|   |---Index.ets // 首页
27|   |---Extension.ets // EmbeddedUIExtensionComponent页面
28|---model
29|   |---Logger.ts // 封装的日志类
30|---embeddeduiextability
31|   |---EmbeddedUIExtAbility.ets
32
33entry/src/main/resources
34|---base
35|   |---element
36|   |---media
37|   |---profile
38|   |   |---main_pages.json // 页面配置文件
39|---en_US
40|---rewfile
41|---zh_CN
42|---module.json5 // 配置文件
43```
44
45### 具体实现
46
47* 使用方在主页面[Index.ets](entry/src/main/ets/pages/Index.ets)中通过EmbeddedUIExtensionComponent页面嵌入提供方应用的EmbeddedUIExtensionAbility提供的UI。
48
49* 源码链接: [Index.ets](entry/src/main/ets/pages/Index.ets)
50
51* 接口参考: [EmbeddedUIExtensionAbility](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-ability-kit/js-apis-app-ability-embeddedUIExtensionAbility.md)
52
53* 提供方UIExtensionAbility页面在[Extension.ets](entry/src/main/ets/pages/Extension.ets)中实现,在页面中需要导入EmbeddedUIExtensionAbility的依赖包,自定义类继承EmbeddedUIExtensionAbility并实现onCreate、onSessionCreate、onSessionDestroy、onForeground、onBackground和onDestroy生命周期回调。
54
55* 源码链接:[Extension.ets](entry/src/main/ets/pages/Extension.ets)
56
57* 接口参考:[EmbeddedUIExtensionAbility](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-ability-kit/js-apis-app-ability-embeddedUIExtensionAbility.md)
58
59* 主页面[Index.ets](entry/src/main/ets/pages/Index.ets)和提供方EmbeddedUIExtensionAbility页面在[Extension.ets](entry/src/main/ets/pages/Index.ets)需要在[main_pages.json](entry\src\main\resources\base\profile\main_pages.json)中配置。
60
61* 源码链接:[main_pages.json](entry/src/main/resources/base/profile/main_pages.json)
62
63* 接口参考:[EmbeddedUIExtensionAbility](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-ability-kit/js-apis-app-ability-embeddedUIExtensionAbility.md)
64
65* 在工程Module对应的[module.json5配置文件](entry/src/main/module.json5)中注册EmbeddedUIExtensionAbility。type标签需要设置为“embeddedUI”, srcEntry字段表示当前UIExtensionAbility组件所对应的代码路径。
66
67* 源码链接:[module.json5](entry/src/main/module.json5)
68
69* 接口参考:[EmbeddedUIExtensionAbility](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-ability-kit/js-apis-app-ability-embeddedUIExtensionAbility.md)
70### 相关权限
71
72不涉及
73
74### 依赖
75
76不涉及
77
78### 约束与限制
79
801. 本当前EmbeddedUIExtensionAbility和EmbeddedComponent仅支持在拥有多进程配置的设备上使用。
81
822. 本示例需要使用DevEco Studio 4.0 Beta2 (Build Version: 4.0.0.400 构建 2023年8月2日)及以上版本才可编译运行。
83
843. 若单进程设备想尝试使用EmbeddedUIExtensionAbility,可以通过如下命令行将单进程设备配置为多进程设备。
85
86```
87hdc shell
88param set persist.sys.abilityms.multi_process_model true // 将persist.sys.abilityms.multi_process_model参数配置为true
89param save // 保存修改
90param get persist.sys.abilityms.multi_process_model // 查询修改结果
91reboot // 修改成功后重启生效
92```
93
94### 下载
95
96如需单独下载本工程,执行如下命令:
97
98```
99git init
100git config core.sparsecheckout true
101echo code/SystemFeature/ApplicationModels/EmbeddedUIExtensionAbility/ > .git/info/sparse-checkout
102git remote add origin https://gitee.com/openharmony/applications_app_samples.git
103git pull origin master
104```