Android平台阿里頁面路由ARouter

2021-08-15 17:42:42 字數 3182 閱讀 2657

之前專案裡使用阿里的頁面路由框架感覺挺不錯的,趁著有空跟大家分享一下。

一、為什麼需要路由框架

原生的路由方案存在的問題

首先談一談原生的路由方案存在的問題以及為什麼需要路由框架。我們所使用的原生路由方案一般是通過顯式intent和隱式intent兩種方式實現的,而在顯式intent的情況下,因為會存在直接的類依賴的問題,導致耦合非常嚴重;而在隱式intent情況下,則會出現規則集中式管理,導致協作變得非常困難。而且一般而言配置規則都是在manifest中的,這就導致了擴充套件性較差。除此之外,使用原生的路由方案會出現跳轉過程無法控制的問題,因為一旦使用了startactivity()就無法插手其中任何環節了,只能交給系統管理,這就導致了在跳轉失敗的情況下無法降級,而是會直接丟擲運營級的異常。

這時候如果考慮使用自定義的路由元件就可以解決以上的一些問題,比如通過url索引就可以解決類依賴的問題;通過分布式管理頁面配置可以解決隱式intent中集中式管理path的問題;自己實現整個路由過程也可以擁有良好的擴充套件性,還可以通過aop的方式解決跳轉過程無法控制的問題,與此同時也能夠提供非常靈活的降級方式。

為什麼要用路由元件

為了解決以上的問題就需要實現乙個自定義的路由框架,而路由框架一般都具有以下的三種特點:

分發:把乙個url或者請求按照一定的規則分配給乙個服務或者頁面來處理,這個流程就是分發,分發是路由框架最基本的功能,當然也可以理解成為簡單的跳轉。

管理:將元件和頁面按照一定的規則管理起來,在分發的時候提供搜尋、載入、修改等操作,這部分就是管理,也是路由框架的基礎,上層功能都是建立在管理之上。

控制:就像路由器一樣,路由的過程中,會有限速、遮蔽等一些控制操作,路由框架也需要在路由的過程中,對路由操作做一些定製性的擴充套件,比方剛才提到的aop,後期的功能更新,也是圍繞這個部分來做的。

以上文字都是copy,出處是

arouter的專案位址是:

整合如下

[html]view plain

copy

//阿里路由  

host和scheme可以隨便改.

[html]view plain

copy

public class schamefilteractivity extends activity   

}  

[html]view plain

copy

arouter.openlog();     // 列印日誌  

arouter.opendebug();   // 開啟除錯模式(如果在instantrun模式下執行,必須開啟除錯模式!線上版本需要關閉,否則有安全風險)  

然後建乙個類對路由統一管理

[html]view plain

copy

public class routerule   

return mrouterule;  

}  /**  

* 路由位址  

* 開啟主介面  

*/  

public void openmainactivity()  

/**  

* 路由位址  

* 開啟資訊介面  

* @param position 主頁的6個分類  

*/  

public void openinformation(int position)  

/**  

* 路由位址  

* 開啟個人中心介面  

*/  

public void openusercenteractivity()  

/**  

* 路由位址  

*/  

public void openwxloginactivity()  

/**  

* 開啟詳情頁  

* @param url  

* @param title  

*/  

public void openwebactivity(string url,string title)  

}  

在要跳轉的類裡面配置,如果要接收引數,加上

[html]view plain

copy

arouter.getinstance().inject(this);  

無引數跳轉不用加,如圖

嗯,具體文件可以看阿里的github。

Android平台阿里頁面路由ARouter

一 為什麼需要路由框架 原生的路由方案存在的問題 首先談一談原生的路由方案存在的問題以及為什麼需要路由框架。我們所使用的原生路由方案一般是通過顯式intent和隱式intent兩種方式實現的,而在顯式intent的情況下,因為會存在直接的類依賴的問題,導致耦合非常嚴重 而在隱式intent情況下,則...

Vue 頁面路由

首先,以在vscode搭建的專案為例,會看到以下目錄 根據路徑src router index.js,找到增加頁面路由的index.js檔案,對應下圖中的寫法進行路由設定 import vue from vue import router from vue router import hellowo...

Android 策略路由

策略路由主要routecontroller.cpp 路由優先順序 const uint32 t rule priority vpn override system 10000 const uint32 t rule priority vpn output to local 11000 const u...