《HarmonyOS應(yīng)用開發(fā)基礎(chǔ)》 課件知識(shí)點(diǎn)3-1-2 UIAbility組件交互_第1頁
《HarmonyOS應(yīng)用開發(fā)基礎(chǔ)》 課件知識(shí)點(diǎn)3-1-2 UIAbility組件交互_第2頁
《HarmonyOS應(yīng)用開發(fā)基礎(chǔ)》 課件知識(shí)點(diǎn)3-1-2 UIAbility組件交互_第3頁
《HarmonyOS應(yīng)用開發(fā)基礎(chǔ)》 課件知識(shí)點(diǎn)3-1-2 UIAbility組件交互_第4頁
《HarmonyOS應(yīng)用開發(fā)基礎(chǔ)》 課件知識(shí)點(diǎn)3-1-2 UIAbility組件交互_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

UIAbility組件交互UIAbility組件與UI頁面的交互基于發(fā)布訂閱模式來實(shí)現(xiàn),事件需要先訂閱后發(fā)布,訂閱者收到消息后進(jìn)行處理。ArkTS引擎實(shí)例內(nèi)部的一個(gè)全局對(duì)象,在ArkTS引擎實(shí)例內(nèi)部都能訪問。EventHubglobalThis使用EventHub進(jìn)行數(shù)據(jù)通信1.在UIAbility中調(diào)用eventHub.on()方法注冊(cè)一個(gè)自定義事件“event1”。import

UIAbility

from

'@ohos.app.ability.UIAbility';const

TAG:

string

=

'[Example].[Entry].[EntryAbility]';export

default

class

EntryAbility

extends

UIAbility

{

func1(...data)

{

//

觸發(fā)事件,完成相應(yīng)的業(yè)務(wù)操作

console.info(TAG,

'1.

'

+

JSON.stringify(data));

}

onCreate(want,

launch)

{

//

獲取eventHub

let

eventhub

=

this.context.eventHub;

//

執(zhí)行訂閱操作

eventhub.on('event1',

this.func1);

eventhub.on('event1',

(...data)

=>

{

//

觸發(fā)事件,完成相應(yīng)的業(yè)務(wù)操作

console.info(TAG,

'2.

'

+

JSON.stringify(data));

});

}}使用EventHub進(jìn)行數(shù)據(jù)通信2.在UI界面中通過eventHub.emit()方法觸發(fā)該事件,在觸發(fā)事件的同時(shí),根據(jù)需要傳入?yún)?shù)信息。import

common

from

'@mon';@Entry@Componentstruct

Index

{

private

context

=

getContext(this)

as

common.UIAbilityContext;

eventHubFunc()

{

//

不帶參數(shù)觸發(fā)自定義“event1”事件

this.context.eventHub.emit('event1');

//

帶1個(gè)參數(shù)觸發(fā)自定義“event1”事件

this.context.eventHub.emit('event1',

1);

//

帶2個(gè)參數(shù)觸發(fā)自定義“event1”事件

this.context.eventHub.emit('event1',

2,

'test');

//

開發(fā)者可以根據(jù)實(shí)際的業(yè)務(wù)場景設(shè)計(jì)事件傳遞的參數(shù)

}

//

頁面展示

build()

{

//

...

}}使用EventHub進(jìn)行數(shù)據(jù)通信3.運(yùn)行日志結(jié)果。4.在自定義事件“event1”使用完成后,可以根據(jù)需要調(diào)用eventHub.off()方法取消該事件的訂閱。//

context為UIAbility實(shí)例的AbilityContextthis.context.eventHub.off('event1');使用globalThis進(jìn)行數(shù)據(jù)同步1.啟動(dòng)UIAbility時(shí),會(huì)創(chuàng)建該UIAbility的實(shí)例,接著會(huì)調(diào)用后生命周期回調(diào)方法onCreate(),在onCreate方法中將數(shù)據(jù)綁定到globalThis上。import

UIAbility

from

'@ohos.app.ability.UIAbility'export

default

class

EntryAbility

extends

UIAbility

{

onCreate(want,

launch)

{

globalThis.testData

=

'globalThis測試數(shù)據(jù)';

//

...

}

//

...}使用globalThis進(jìn)行數(shù)據(jù)同步2.在UI界面中即可通過globalThis獲取到testData參數(shù)信息。@Entry@Componentstruct

Index

{

aboutToAppear()

{

let

data=

globalThis.testData;

(‘globalThis中的testData參數(shù):'+data)

}

//

頁面展示

build()

{

//

...

}}UIAbility組件間交互(設(shè)備內(nèi))啟動(dòng)應(yīng)用內(nèi)的UIAbility1.在EntryAbility中,通過調(diào)用startAbility()方法啟動(dòng)UIAbility。let

wantInfo

=

{

deviceId:

'',

//

deviceId為空表示本設(shè)備

bundleName:

'com.example.myapplication',

abilityName:

'SecondAbility',

moduleName:

'module1',

//

moduleName非必選

parameters:

{

//

自定義信息

info:

'來自EntryAbility

Index頁面',

},}//

context為調(diào)用方UIAbility的AbilityContextthis.context.startAbility(wantInfo).then(()

=>

{

//

...}).catch((err)

=>

{

//

...})UIAbility組件間交互(設(shè)備內(nèi))2.在SecondAbility的生命周期回調(diào)文件中接收EntryAbility傳遞過來的參數(shù)。import

UIAbility

from

'@ohos.app.ability.UIAbility';import

Window

from

'@ohos.window';export

default

class

SecondAbility

extends

UIAbility

{

onCreate(want,

launchParam)

{

//

接收調(diào)用方UIAbility傳過來的參數(shù)

let

secondAbilityWant

=

want;

let

info

=

secondAbilityWant?.parameters?.info;

//

...

}}UIAbility組件間交互(設(shè)備內(nèi))3.在SecondAbility業(yè)務(wù)完成之后,如需要停止當(dāng)前UIAbility實(shí)例,在SecondAbility中通過調(diào)用terminateSelf()方法實(shí)現(xiàn)。//

context為需要停止的UIAbility實(shí)例的AbilityContextthis.context.terminateSelf((err)

=>

{

//

...});UIAbility組件間交互(設(shè)備內(nèi))啟動(dòng)應(yīng)用內(nèi)的UIAbility并獲取返回結(jié)果1.在EntryAbility中,調(diào)用startAbilityForResult()接口啟動(dòng)SecondAbility。let

wantInfo

=

{

deviceId:

'',

//

deviceId為空表示本設(shè)備

bundleName:

'com.example.myapplication',

abilityName:

'SecondAbility',

moduleName:

'module1',

//

moduleName非必選

parameters:

{

//

自定義信息

info:

'來自EntryAbility

Index頁面',

},}//

context為調(diào)用方UIAbility的AbilityContextthis.context.startAbilityForResult(wantInfo).then((data)

=>

{

//

...}).catch((err)

=>

{

//

...})UIAbility組件間交互(設(shè)備內(nèi))2.在SecondAbility停止自身時(shí),需要調(diào)用terminateSelfWithResult()方法,入?yún)bilityResult為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為被調(diào)用方UIAbility的AbilityContextthis.context.terminateSelfWithResult(abilityResult,

(err)

=>

{

//

...});UIAbility組件間交互(設(shè)備內(nèi))3.SecondAbility停止自身后,EntryAbility通過startAbilityForResult()方法回調(diào)接收被SecondAbility返回的信息,RESULT_CODE需要與前面的數(shù)值保持一致。const

RESULT_CODE:

number

=

1001;//

...//

context為調(diào)用方UIAbility的AbilityContextt

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論