HarmonyOS中實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)的方法匯總
想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
–1. 不同Slice間跳轉(zhuǎn),同一個(gè)Ability中,優(yōu)點(diǎn)是方便,高效,缺點(diǎn)是業(yè)務(wù)邏輯復(fù)雜度受限;
- button.setClickedListener(
- listener -> present(new SecondAbilitySlice(), new Intent())
- );
–2. 使用Intent借助于ElementName,最常用的頁(yè)面跳轉(zhuǎn)方式,方便傳遞參數(shù)以及實(shí)現(xiàn)相對(duì)復(fù)雜的業(yè)務(wù)邏輯交互;
- ElementName elementName = new ElementName(……);
- intent.setElement(elementName);
- intent.setParam(……);
- startAbility(intent);
–3. 借助于Operation,可實(shí)現(xiàn)跨應(yīng)用頁(yè)面跳轉(zhuǎn);
- Intent intent = new Intent();
- Operation operation = new Intent.OperationBuilder()
- .withDeviceId("")
- .withBundleName("com.demoapp")
- .withAbilityName("com.demoapp.FooAbility")
- .build();
- intent.setOperation(operation);
- startAbility(intent);
–4. Rout路由(JS),調(diào)用router.push()接口將uri指定的頁(yè)面添加到路由棧中,即跳轉(zhuǎn)到uri指定的頁(yè)面。在調(diào)用router方法之前,需要導(dǎo)入router模塊。
調(diào)用router.push()路由到詳情頁(yè);調(diào)用router.back()回到首頁(yè);
- // index.js
- import router from '@system.router';
- export default {
- launch() {
- router.push ({
- uri: 'pages/detail/detail',
- });
- },
- }
- // detail.js
- import router from '@system.router';
- export default {
- launch() {
- router.back();
- },
- }
–5. 通過(guò)遷移實(shí)現(xiàn)分布式設(shè)備間頁(yè)面?zhèn)鬟f(有請(qǐng)求遷移和請(qǐng)求回遷兩種操作)
1)需實(shí)現(xiàn)IAbilityContinuation接口
2)需要權(quán)限
- ohos.permission.GET_DISTRIBUTED_DEVICE_INFO:用于允許獲取分布式組網(wǎng)內(nèi)的設(shè)備列表和設(shè)備信息
- ohos.permission.DISTRIBUTED_DATASYNC:用于允許不同設(shè)備間的數(shù)據(jù)交換
- ohos.permission.DISTRIBUTED_DEVICE_STATE_CHANGE:用于允許監(jiān)聽(tīng)分布式組網(wǎng)內(nèi)的設(shè)備狀態(tài)變化
- ohos.permission.READ_USER_STORAGE:讀取存儲(chǔ)卡中的內(nèi)容
- ohos.permission.WRITE_USER_STORAGE:修改或刪除存儲(chǔ)卡中的內(nèi)容
- ohos.permission.GET_BUNDLE_INFO:用于查詢(xún)其他應(yīng)用的信息
- ohos.permission.servicebus.ACCESS_SERVICE:分布式數(shù)據(jù)傳輸?shù)臋?quán)限
- com.huawei.hwddmp.servicebus.BIND_SERVICE:系統(tǒng)應(yīng)用使用權(quán)限
3)需要獲取分布式設(shè)備ID(NetworkID)
核心服務(wù)類(lèi):IContinuationRegisterManager
服務(wù)類(lèi)的常用API方法:
getContinuationRegisterManager();獲取服務(wù)類(lèi)的對(duì)象
register();注冊(cè)服務(wù)
showDeviceList();獲取設(shè)備列表
unregister();注銷(xiāo)服務(wù)
4)請(qǐng)求遷移關(guān)鍵步驟(假定設(shè)備A向設(shè)備B遷移)
需要遷移的page實(shí)現(xiàn)IAbilityContinuation接口
復(fù)寫(xiě)onStartContinuation()方法,做遷移前的準(zhǔn)備工作
復(fù)寫(xiě)onSaveData()方法,保存遷移數(shù)據(jù)
在設(shè)備B上復(fù)寫(xiě)onRestoreData()方法,恢復(fù)遷移數(shù)據(jù)
在設(shè)備A上復(fù)寫(xiě)onCompleteContinuation()方法,做遷移后的收尾工作
調(diào)用continueAbility()或continueAbilityReversibly()發(fā)起遷移
5)請(qǐng)求回遷需在設(shè)備A上調(diào)用reverseContinueAbility()請(qǐng)求回遷
以下關(guān)鍵步驟類(lèi)似4)
想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)