HarmonyOS中實現(xiàn)頁面跳轉(zhuǎn)的方法匯總
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
–1. 不同Slice間跳轉(zhuǎn),同一個Ability中,優(yōu)點是方便,高效,缺點是業(yè)務(wù)邏輯復(fù)雜度受限;
- button.setClickedListener(
- listener -> present(new SecondAbilitySlice(), new Intent())
- );
–2. 使用Intent借助于ElementName,最常用的頁面跳轉(zhuǎn)方式,方便傳遞參數(shù)以及實現(xiàn)相對復(fù)雜的業(yè)務(wù)邏輯交互;
- ElementName elementName = new ElementName(……);
- intent.setElement(elementName);
- intent.setParam(……);
- startAbility(intent);
–3. 借助于Operation,可實現(xiàn)跨應(yīng)用頁面跳轉(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指定的頁面添加到路由棧中,即跳轉(zhuǎn)到uri指定的頁面。在調(diào)用router方法之前,需要導(dǎo)入router模塊。
調(diào)用router.push()路由到詳情頁;調(diào)用router.back()回到首頁;
- // 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. 通過遷移實現(xiàn)分布式設(shè)備間頁面?zhèn)鬟f(有請求遷移和請求回遷兩種操作)
1)需實現(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)聽分布式組網(wǎng)內(nèi)的設(shè)備狀態(tài)變化
- ohos.permission.READ_USER_STORAGE:讀取存儲卡中的內(nèi)容
- ohos.permission.WRITE_USER_STORAGE:修改或刪除存儲卡中的內(nèi)容
- ohos.permission.GET_BUNDLE_INFO:用于查詢其他應(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ù)類:IContinuationRegisterManager
服務(wù)類的常用API方法:
getContinuationRegisterManager();獲取服務(wù)類的對象
register();注冊服務(wù)
showDeviceList();獲取設(shè)備列表
unregister();注銷服務(wù)
4)請求遷移關(guān)鍵步驟(假定設(shè)備A向設(shè)備B遷移)
需要遷移的page實現(xiàn)IAbilityContinuation接口
復(fù)寫onStartContinuation()方法,做遷移前的準(zhǔn)備工作
復(fù)寫onSaveData()方法,保存遷移數(shù)據(jù)
在設(shè)備B上復(fù)寫onRestoreData()方法,恢復(fù)遷移數(shù)據(jù)
在設(shè)備A上復(fù)寫onCompleteContinuation()方法,做遷移后的收尾工作
調(diào)用continueAbility()或continueAbilityReversibly()發(fā)起遷移
5)請求回遷需在設(shè)備A上調(diào)用reverseContinueAbility()請求回遷
以下關(guān)鍵步驟類似4)
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)