0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【開源三方庫】Arouter:一款輕量、高效的頁面路由工具

OpenAtom OpenHarmony ? 來源:未知 ? 2023-11-24 21:15 ? 次閱讀

點擊藍(lán)字 ╳ 關(guān)注我們

開源項目 OpenHarmony是每個人的 OpenHarmony wKgaomVgowKABhtvAABG3jYJR5o827.jpg

孫澳

OpenHarmony知識體系組

簡介

Arouter是一款適用于OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)的輕量高效的頁面路由工具,相比原生的路由方案,Arouter更有優(yōu)勢。傳統(tǒng)的路由方案使用顯示Intent和隱式Intent進(jìn)行跳轉(zhuǎn),會存在一些問題。使用顯式Intent耦合度過高,而使用隱式Intent集中式管理Path會導(dǎo)致協(xié)作困難。Arouter采用自定義的路由方案,通過解析標(biāo)準(zhǔn)URL進(jìn)行跳轉(zhuǎn),避免了直接依賴的問題。使用分布式管理頁面配置,解決了集中式管理Path的問題,整個路由跳轉(zhuǎn)過程更加透明,具有更好的擴(kuò)展性。Arouter相比原生路由方案,具有更低的耦合度、更好的協(xié)作性和控制攔截能力,同時采用分布式管理頁面配置,提供了更好的擴(kuò)展性,目前支持SDK:OpenHarmony API Version 10版本。

效果圖

wKgaomVgowOAMnJnAFUxibk44kI804.gif ?

使用說明

Arouter支持以下功能:

●支持頁面間路由跳轉(zhuǎn);

●支持帶參數(shù)跳轉(zhuǎn)及回調(diào);

●支持配置跳轉(zhuǎn)攔截器;

●支持預(yù)處理跳轉(zhuǎn)與否;

路由跳轉(zhuǎn)

1.不傳參跳轉(zhuǎn)通過Arouter.getInstance()創(chuàng)建路由對象,使用鏈?zhǔn)秸{(diào)用方法 build('')配置跳轉(zhuǎn)的頁面,navigation() 方法進(jìn)行頁面跳轉(zhuǎn)。
import {Arouter} from "@ohos/arouteronactivityresult";
Arouter.getInstance()    
 .build("--/--")  //需要跳轉(zhuǎn)的地址    
 .navigation()

2.傳參跳轉(zhuǎn)在不傳參跳轉(zhuǎn)的基礎(chǔ)上,跳轉(zhuǎn)之前通過withParams()進(jìn)行參數(shù)配置。
import {Arouter} from "@ohos/arouteronactivityresult";
Arouter.getInstance()    
 .build("--/--")  //需要跳轉(zhuǎn)的地址    
 .withParams({index:"--"})    
.navigation()
3.路由回調(diào)路由回調(diào)需要配合NavigationCallback接口進(jìn)行,在路由前的頁面實現(xiàn)NavigationCallback接口
import {NavigationCallback} from '@ohos/arouteronactivityresult'
var callback:NavigationCallback = {    
 onInterrupt(postcard){},    
 onArrival(postcard){},    
 onActivityResult(data){}
}
然后將callback傳入 .navigationWithCallback()中進(jìn)行跳轉(zhuǎn)
import {Arouter} from "@ohos/arouteronactivityresult";
Arouter.getInstance()    
 .build("--")//需要跳轉(zhuǎn)的地址    
.navigationWithCallback(callback)
在目標(biāo)頁面的onPageShow()生命周期中調(diào)用getPostcard()方法獲取到指定的postcard
import router from '@ohos.router';
if (postcard == null) { 
 postcard =  Arouter.getInstance().getPostcard(router.getState().path+router.getState().name);   
}
使用 postcard.getNavigationCallback() 方法調(diào)用對應(yīng)的回調(diào)方法,即可回調(diào)源頁面實現(xiàn)的方法
postcard.getNavigationCallback().onActivityResult(params)

路由攔截

1.配置攔截器在攔截器中的process()方法中實現(xiàn)頁面的攔截,通過interceptorCallback.onInterrupt()中斷跳轉(zhuǎn),interceptorCallback.onContinue()繼續(xù)跳轉(zhuǎn)。
import {Postcard,IInterceptor,InterceptorCallback} from '@ohos/arouteronactivityresult';
var iInterceptor:IInterceptor= {
    process(postcard:Postcard, interceptorCallback:InterceptorCallback) {
        // 選擇攔截的頁面,若跳轉(zhuǎn)時有該路徑則進(jìn)行攔截提示,若沒有則直接跳轉(zhuǎn)
        if (Postcard.getUri() == 'pages/transit') {
            // 選擇彈框
            AlertDialog.show(
                {
                    message: '被攔截了,點擊繼續(xù)跳轉(zhuǎn)',
                    primaryButton: {
                        value: '取消',
                        action: () => {
                            // 中斷跳轉(zhuǎn)
                         interceptorCallback.onInterrupt(postcard)
                        }
                    },
                    secondaryButton: {
                        value: '繼續(xù)',
                        action: () => {
                            // 繼續(xù)跳轉(zhuǎn)
                        interceptorCallback.onContinue(postcard);
                        }
                    },
                }
            )
        } else {
            // 繼續(xù)跳轉(zhuǎn)
            interceptorCallback.onContinue(postcard);
        }
    }
}
2.注冊攔截器
import {registerInterceptor} from '@ohos/arouteronactivityresult';
registerInterceptor(iInterceptor);
3.移除攔截器
import {unregisterInterceptor} from '@ohos/arouteronactivityresult';
unregisterInterceptor()
4.配置綠色通道在跳轉(zhuǎn)前使用.setGreenChannel()方法跳過攔截(true:跳過攔截)。
Arouter.getInstance()
    .build("--/--")//需要跳轉(zhuǎn)的地址
    .setGreenChannel(true)
.navigation()
5.配置預(yù)處理跳轉(zhuǎn)與否預(yù)處理:實現(xiàn) PretreatmentService 接口中 onPretreatment 方法,并返回一個Boolean值(true:繼續(xù)跳轉(zhuǎn),false:不跳轉(zhuǎn))。
import {PretreatmentService} from '@ohos/arouteronactivityresult';
var pretreatmentService:PretreatmentService = {
  onPretreatment(postcardboolean{
    return true
  }
}

在跳轉(zhuǎn)前調(diào)用.setPretreatmentService() 方法,將 pretreatmentService傳入 setPretreatmentService()方法中完成預(yù)處理功能。

Arouter.getInstance()
    .build(this.router)
    .setPretreatmentService(pretreatmentService)
.navigationWithCallback(callback)

接口說明

ArouterwKgaomVgowOAaJS8AABZ7zRyQvI888.png ?回調(diào)接口wKgaomVgowOAFdW9AAA0dzkOMPk424.png ?

下載安裝

ohpminstall@ohos/arouteronactivityresult

源碼鏈接

https://gitee.com/openharmony-tpc/arouter-api-onActivityResult


原文標(biāo)題:【開源三方庫】Arouter:一款輕量、高效的頁面路由工具

文章出處:【微信公眾號:OpenAtom OpenHarmony】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 鴻蒙
    +關(guān)注

    關(guān)注

    57

    文章

    2378

    瀏覽量

    42940
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3731

    瀏覽量

    16431

原文標(biāo)題:【開源三方庫】Arouter:一款輕量、高效的頁面路由工具

文章出處:【微信號:gh_e4f28cfa3159,微信公眾號:OpenAtom OpenHarmony】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    EE-303:將VisualDSP線程安全與第三方RTOS配合使用

    電子發(fā)燒友網(wǎng)站提供《EE-303:將VisualDSP線程安全與第三方RTOS配合使用.pdf》資料免費下載
    發(fā)表于 01-07 14:09 ?0次下載
    EE-303:將VisualDSP線程安全<b class='flag-5'>庫</b>與第<b class='flag-5'>三方</b>RTOS配合使用

    鴻蒙原生頁面高性能解決方案上線OpenHarmony社區(qū) 助力打造高性能原生應(yīng)用

    NEXT的原生頁面高性能解決方案,從頁面滑動、跳轉(zhuǎn)及應(yīng)用冷啟動等關(guān)鍵環(huán)節(jié),為開發(fā)者提供全面的支持。目前,這些解決方案均已上線OpenHarmony開源社區(qū),可在OpenHarmony三方
    發(fā)表于 01-02 18:00

    AKI跨語言調(diào)用神助攻C/C++代碼遷移至HarmonyOS NEXT

    跨語言調(diào)用,成為開發(fā)者和廠商面臨的重要挑戰(zhàn)。為解決這痛點,一款名為AKI (Alpha Kernel Interacting)的開源三方
    發(fā)表于 01-02 17:08

    鴻蒙Flutter實戰(zhàn):05-使用第三方插件

    # 鴻蒙Flutter 實戰(zhàn):使用第三方插件 在鴻蒙Flutter開發(fā)中,如果涉及到使用原生功能,就要使用插件。使用插件有兩種方式,種是自己編寫原生ArkTS代碼,在Dart側(cè)調(diào)用。另外
    發(fā)表于 10-22 21:54

    瑞芯微RK3566鴻蒙開發(fā)板Android11修改第三方輸入法為默認(rèn)輸入法

    本文適用于觸覺智能所有支持Android11系統(tǒng)的開發(fā)板修改第三方輸入法為默認(rèn)輸入法。本次使用的是觸覺智能的Purple Pi OH鴻蒙開源主板,搭載了瑞芯微RK3566芯片,類樹莓派設(shè)計,是Laval官方社區(qū)主薦的一款鴻蒙開發(fā)
    的頭像 發(fā)表于 09-24 09:43 ?493次閱讀
    瑞芯微RK3566鴻蒙開發(fā)板Android11修改第<b class='flag-5'>三方</b>輸入法為默認(rèn)輸入法

    開源鴻蒙】使用QEMU運行OpenHarmony系統(tǒng)

    本文將會介紹如何從源碼安裝QEMU 6.2.0,以及如何使用QEMU運行OpenHarmony系統(tǒng)。通過本文,你將會對QEMU和OpenHarmony系統(tǒng)又
    的頭像 發(fā)表于 09-14 08:51 ?658次閱讀
    【<b class='flag-5'>開源</b>鴻蒙】使用QEMU運行OpenHarmony<b class='flag-5'>輕</b><b class='flag-5'>量</b>系統(tǒng)

    ?介紹一款Java開發(fā)的開源MES系統(tǒng)

    ?介紹一款Java開發(fā)的開源MES系統(tǒng),萬界星空科技開源的MES系統(tǒng)。該系統(tǒng)基于Java開發(fā),具有廣泛的適用性和高度的可定制性,能夠滿足不同行業(yè)、不同規(guī)模企業(yè)的智能制造需求。
    的頭像 發(fā)表于 09-05 17:39 ?694次閱讀
    ?介紹<b class='flag-5'>一款</b>Java開發(fā)的<b class='flag-5'>開源</b>MES系統(tǒng)

    鴻蒙開發(fā)接口UI界面:【@ohos.router (頁面路由)】

    本模塊首批接口從API version 8開始支持。后續(xù)版本的新增接口,采用上角標(biāo)單獨標(biāo)記接口的起始版本。 > - 頁面路由需要在頁面渲染完成之后才能調(diào)用,在onInit和onReady生命周期中
    的頭像 發(fā)表于 05-28 16:26 ?979次閱讀
    鴻蒙開發(fā)接口UI界面:【@ohos.router (<b class='flag-5'>頁面</b><b class='flag-5'>路由</b>)】

    微軟或?qū)㈤_放Xbox主機(jī)授權(quán)給第三方廠商

    據(jù)悉,5 月 26 日,知名媒體 Windows Central 的編輯 Jez Corden 揭露了微軟即將遵循第三方手柄流程,允許在其 XBOX 主機(jī)上引入第三方產(chǎn)品。
    的頭像 發(fā)表于 05-27 15:18 ?679次閱讀

    Labview如何內(nèi)嵌操作第三方EXE程序!

    自己在網(wǎng)上搜了下相關(guān)資料,能把第三方EXE內(nèi)嵌進(jìn)入容器里,但是有個問題,這個第三方軟件必須手動拖到容器正中間,手動最大化。請問有什么方法可以自動實現(xiàn)嗎? 下圖是我內(nèi)嵌的POLL 軟件。如圖!
    發(fā)表于 04-18 14:26

    如何挑選一款性價比高的家用路由

    家庭網(wǎng)絡(luò)已經(jīng)成為人們生活中不可或缺的部分。而選擇一款性價比高的家用路由器對于保障網(wǎng)絡(luò)連接質(zhì)量、提升網(wǎng)絡(luò)體驗至關(guān)重要。本文將從性能、覆蓋范圍、安全性、易用性和價格等方面,為您介紹如何挑選一款
    的頭像 發(fā)表于 04-16 15:14 ?580次閱讀

    鴻蒙OS開發(fā)學(xué)習(xí):【第三方調(diào)用】

    在Stage模型中,如何調(diào)用已經(jīng)上架到[三方中心]的社區(qū)和項目內(nèi)創(chuàng)建的本地。
    的頭像 發(fā)表于 04-14 11:34 ?941次閱讀
    鴻蒙OS開發(fā)學(xué)習(xí):【第<b class='flag-5'>三方</b><b class='flag-5'>庫</b>調(diào)用】

    Meta Quest頭顯將支持多款安卓第三方應(yīng)用并行

    Meta已悄然啟動了與此相關(guān)的功能,意味著Quest頭顯可同時操作多個第三方Android應(yīng)用。在此之前,Quest對第三方Android應(yīng)用有嚴(yán)格限制,用戶每次僅能打開個,無法實現(xiàn)同屏幕并行多個第
    的頭像 發(fā)表于 03-11 10:58 ?780次閱讀

    MacPaw將于4月在歐洲市場推出Setapp第三方應(yīng)用商城

    3月1日報道,知名廠商MacPaw于今日發(fā)表聲明,宣稱其自有的第三方應(yīng)用商城Setapp將進(jìn)軍歐洲市場,發(fā)布會定于今年4月舉行,并且官網(wǎng)預(yù)告了可供用戶試用的候選頁面,以吸引更多人參與到Setapp移動版本Beta的測試中來。
    的頭像 發(fā)表于 03-01 10:16 ?596次閱讀

    分享個據(jù)說是比Wget、Curl更強(qiáng)大的下載工具!

    aria2 是一款高效的命令行下載工具??胺Q下載利器!
    的頭像 發(fā)表于 02-20 10:24 ?884次閱讀
    分享<b class='flag-5'>一</b>個據(jù)說是比Wget、Curl更強(qiáng)大的下載<b class='flag-5'>工具</b>!