《HarmonyOS应用开发基础》 课件知识点3-1-2 UIAbility组件交互_第1页
《HarmonyOS应用开发基础》 课件知识点3-1-2 UIAbility组件交互_第2页
《HarmonyOS应用开发基础》 课件知识点3-1-2 UIAbility组件交互_第3页
《HarmonyOS应用开发基础》 课件知识点3-1-2 UIAbility组件交互_第4页
《HarmonyOS应用开发基础》 课件知识点3-1-2 UIAbility组件交互_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论