版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
UIAbility组件交互UIAbility组件与UI页面的交互基于发布订阅模式来实现,事件需要先订阅后发布,订阅者收到消息后进行处理。ArkTS引擎实例内部的一个全局对象,在ArkTS引擎实例内部都能访问。EventHubglobalThis使用EventHub进行数据通信1.在UIAbility中调用eventHub.on()方法注册一个自定义事件“event1”。import
UIAbility
from
'@ohos.app.ability.UIAbility';const
TAG:
string
=
'[Example].[Entry].[EntryAbility]';export
default
class
EntryAbility
extends
UIAbility
{
func1(...data)
{
//
触发事件,完成相应的业务操作
console.info(TAG,
'1.
'
+
JSON.stringify(data));
}
onCreate(want,
launch)
{
//
获取eventHub
let
eventhub
=
this.context.eventHub;
//
执行订阅操作
eventhub.on('event1',
this.func1);
eventhub.on('event1',
(...data)
=>
{
//
触发事件,完成相应的业务操作
console.info(TAG,
'2.
'
+
JSON.stringify(data));
});
}}使用EventHub进行数据通信2.在UI界面中通过eventHub.emit()方法触发该事件,在触发事件的同时,根据需要传入参数信息。import
common
from
'@mon';@Entry@Componentstruct
Index
{
private
context
=
getContext(this)
as
common.UIAbilityContext;
eventHubFunc()
{
//
不带参数触发自定义“event1”事件
this.context.eventHub.emit('event1');
//
带1个参数触发自定义“event1”事件
this.context.eventHub.emit('event1',
1);
//
带2个参数触发自定义“event1”事件
this.context.eventHub.emit('event1',
2,
'test');
//
开发者可以根据实际的业务场景设计事件传递的参数
}
//
页面展示
build()
{
//
...
}}使用EventHub进行数据通信3.运行日志结果。4.在自定义事件“event1”使用完成后,可以根据需要调用eventHub.off()方法取消该事件的订阅。//
context为UIAbility实例的AbilityContextthis.context.eventHub.off('event1');使用globalThis进行数据同步1.启动UIAbility时,会创建该UIAbility的实例,接着会调用后生命周期回调方法onCreate(),在onCreate方法中将数据绑定到globalThis上。import
UIAbility
from
'@ohos.app.ability.UIAbility'export
default
class
EntryAbility
extends
UIAbility
{
onCreate(want,
launch)
{
globalThis.testData
=
'globalThis测试数据';
//
...
}
//
...}使用globalThis进行数据同步2.在UI界面中即可通过globalThis获取到testData参数信息。@Entry@Componentstruct
Index
{
aboutToAppear()
{
let
data=
globalThis.testData;
(‘globalThis中的testData参数:'+data)
}
//
页面展示
build()
{
//
...
}}UIAbility组件间交互(设备内)启动应用内的UIAbility1.在EntryAbility中,通过调用startAbility()方法启动UIAbility。let
wantInfo
=
{
deviceId:
'',
//
deviceId为空表示本设备
bundleName:
'com.example.myapplication',
abilityName:
'SecondAbility',
moduleName:
'module1',
//
moduleName非必选
parameters:
{
//
自定义信息
info:
'来自EntryAbility
Index页面',
},}//
context为调用方UIAbility的AbilityContextthis.context.startAbility(wantInfo).then(()
=>
{
//
...}).catch((err)
=>
{
//
...})UIAbility组件间交互(设备内)2.在SecondAbility的生命周期回调文件中接收EntryAbility传递过来的参数。import
UIAbility
from
'@ohos.app.ability.UIAbility';import
Window
from
'@ohos.window';export
default
class
SecondAbility
extends
UIAbility
{
onCreate(want,
launchParam)
{
//
接收调用方UIAbility传过来的参数
let
secondAbilityWant
=
want;
let
info
=
secondAbilityWant?.parameters?.info;
//
...
}}UIAbility组件间交互(设备内)3.在SecondAbility业务完成之后,如需要停止当前UIAbility实例,在SecondAbility中通过调用terminateSelf()方法实现。//
context为需要停止的UIAbility实例的AbilityContextthis.context.terminateSelf((err)
=>
{
//
...});UIAbility组件间交互(设备内)启动应用内的UIAbility并获取返回结果1.在EntryAbility中,调用startAbilityForResult()接口启动SecondAbility。let
wantInfo
=
{
deviceId:
'',
//
deviceId为空表示本设备
bundleName:
'com.example.myapplication',
abilityName:
'SecondAbility',
moduleName:
'module1',
//
moduleName非必选
parameters:
{
//
自定义信息
info:
'来自EntryAbility
Index页面',
},}//
context为调用方UIAbility的AbilityContextthis.context.startAbilityForResult(wantInfo).then((data)
=>
{
//
...}).catch((err)
=>
{
//
...})UIAbility组件间交互(设备内)2.在SecondAbility停止自身时,需要调用terminateSelfWithResult()方法,入参abilityResult为SecondAbility需要返回给EntryAbility的信息。const
RESULT_CODE:
number
=
1001;let
abilityResult
=
{
resultCode:
RESULT_CODE,
want:
{
bundleName:
'com.example.myapplication',
abilityName:
'SecondAbility',
moduleName:
'module1',
parameters:
{
info:
'来自SecondAbility
Index页面',
},
},}//
context为被调用方UIAbility的AbilityContextthis.context.terminateSelfWithResult(abilityResult,
(err)
=>
{
//
...});UIAbility组件间交互(设备内)3.SecondAbility停止自身后,EntryAbility通过startAbilityForResult()方法回调接收被SecondAbility返回的信息,RESULT_CODE需要与前面的数值保持一致。const
RESULT_CODE:
number
=
1001;//
...//
context为调用方UIAbility的AbilityContextt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 贵阳道路施工方案(3篇)
- 细胞的增殖课件2025-2026学年高一上学期生物人教版必修1
- 2026山东事业单位统考东营市广饶县招聘考试备考题库及答案解析
- 2026广西南宁市横州市总工会招聘社会化工会工作者8人备考考试试题及答案解析
- 2026台州市水利水电勘测设计院有限公司招聘参考考试题库及答案解析
- 2026年济宁微山县事业单位公开招聘初级综合类岗位人员(45人)备考考试试题及答案解析
- 2026河南许昌烟草机械有限责任公司招聘38人考试参考试题及答案解析
- 2026绵阳农商银行寒假实习生招聘备考考试题库及答案解析
- 2026年聊城市第二人民医院“水城优才”青年人才引进参考考试题库及答案解析
- 2026山东大学齐鲁第二医院北院区综合服务中心结算岗位(劳务派遣)补充招聘参考考试题库及答案解析
- 污水处理厂设备预防性维护方案
- 浙江省宁波市2024-2025学年第二学期期末九校联考高二英语试题(含答案)
- 药品库房管理培训
- 低压作业实操科目三安全隐患图片题库
- 面部血管解剖讲解
- 物业工程部维修工礼仪培训
- WJ30059-2024军工燃烧爆炸品工程设计安全规范
- 艾欧史密斯热水器CEWH-50P5说明书
- T/CMES 37002-2022景区玻璃类游乐和观景设施建造单位能力条件要求
- T/CATCM 029-2024中药材产地加工(趁鲜切制)生产技术规范
- 2025至2030中国氯虫苯甲酰胺行业应用状况及未来前景展望报告
评论
0/150
提交评论