版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 全年市場活動(dòng)策劃方案
- 2025設(shè)備財(cái)產(chǎn)信托合同協(xié)議書
- 引流管護(hù)理的常規(guī)
- 2025論聯(lián)合國國際貨物銷售合同公約與國際商事合同通則關(guān)系
- 2025測評(píng)系統(tǒng)代理合同
- 戶外教學(xué)活動(dòng)安排計(jì)劃
- 電商行業(yè)客服人員培訓(xùn)總結(jié)
- 美甲服務(wù)員的工作技能要求
- 辦公文具銷售工作總結(jié)
- 2025油脂(油料)省間調(diào)撥合同
- 2024年VB程序設(shè)計(jì):從入門到精通
- 2024年故宮文化展覽計(jì)劃:課件創(chuàng)意與呈現(xiàn)
- 公共交通乘客投訴管理制度
- 不銹鋼伸縮縫安裝施工合同
- 水土保持監(jiān)理總結(jié)報(bào)告
- Android移動(dòng)開發(fā)基礎(chǔ)案例教程(第2版)完整全套教學(xué)課件
- 醫(yī)保DRGDIP付費(fèi)基礎(chǔ)知識(shí)醫(yī)院內(nèi)培訓(xùn)課件
- 專題12 工藝流程綜合題- 三年(2022-2024)高考化學(xué)真題分類匯編(全國版)
- DB32T-經(jīng)成人中心靜脈通路裝置采血技術(shù)規(guī)范
- TDALN 033-2024 學(xué)生飲用奶安全規(guī)范入校管理標(biāo)準(zhǔn)
- 物流無人機(jī)垂直起降場選址與建設(shè)規(guī)范
評(píng)論
0/150
提交評(píng)論