【移動應用開發(fā)技術】Android中如何設計與實現(xiàn)scheme跳轉_第1頁
【移動應用開發(fā)技術】Android中如何設計與實現(xiàn)scheme跳轉_第2頁
【移動應用開發(fā)技術】Android中如何設計與實現(xiàn)scheme跳轉_第3頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

【移動應用開發(fā)技術】Android中如何設計與實現(xiàn)scheme跳轉

這篇文章主要為大家展示了Android中如何設計與實現(xiàn)scheme跳轉,內容簡而易懂,希望大家可以學習一下,學習完之后肯定會有收獲的,下面讓在下帶大家一起來看看吧。緣起隨著App的成長,我們難免會遇到以下這些需求:為了解決這些問題,App一般都會自定義一個scheme跳轉協(xié)議,多端都實現(xiàn)這個協(xié)議,以此來解決各種運營需求。今天就來解析下QMUI最新版QMUISchemeHandler的設計與實現(xiàn)。一個scheme的格式大概是這樣子:schemeName://action?param1=value1¶m2=value2schemeName://action?param1=value1¶m2=value2例如:qmui://home?tab=2qmui://home?tab=2從技術角度來講,實現(xiàn)scheme的跳轉并不是件很難的事情,就是下面兩個步驟:但是寫代碼時如果不加以設計,就容易是堆一堆的ifelse。例如:每當有新的scheme添加時,就去添加一個if,直到它逐漸變成一段巨長的爛代碼,改都改不動。因而我們要勤思考、多重構,盡早通過設計出優(yōu)良的框架來解放自己的雙手。對于ifelse這類的重構,一個基本的方式就是用查表法,將所有的條件以及其所要執(zhí)行的行為放在一個map里,然后使用時通過去查詢這個map而獲取要執(zhí)行的行為。而我們可以通過注解配合代碼生成的方式構建這個map,從而減少我們代碼的編寫量。除此之外,我們還需要考慮各種功能性需求:接口設計任何一個庫的開發(fā),為了讓業(yè)務使用方足夠舒心,既要保證庫的功能足夠強大,也要保證使用的方便性,QMUIScheme對外主要是QMUISchemeHandler這個入口類,以及ActivityScheme和FragmentScheme兩個注解。QMUISchemeHandlerQMUISchemeHandler通過Builder模式實例化:大多數(shù)場景,QMUISchemeHandler采用單例模式即可。其可以設置多個攔截器、設置fragment、activity的默認實例化工廠、以及默認的匹配器。實例工廠和匹配器都是提供了默認實現(xiàn)的,大多數(shù)場景是不需要調用者關心的。而且這里都只是設置全局默認值,到了scheme注解那一層,還可以為每個scheme指定不同的值,以滿足可能的自定義需求。ActivityScheme與FragmentScheme注解這兩個注解是非常相似的,但是因為Fragment有一些更多的配置項,因為獨立出來了。可以看出,我們前面所羅列的各種需求,都在SchemeHandler以及兩個scheme里體現(xiàn)出來了。使用對于業(yè)務使用者,我們只需要在Activity或者Fragment上加上注解。QMUISchemeHandler默認會將參數(shù)解析出來并放到Activity的intent里或者Fragment的arguments里,因而我們可以在onCreate里將我們關心的值取出來:這種傳值方法很符合Android官方設計的做法了,這也要求Fragment遵循無參構造器的使用方式。對于WebView,我們可以通過重寫WebViewClient#shouldOverrideUrlLoading來處理scheme跳轉:實現(xiàn)QMUISchemeHandler采用代碼生成的方式,在編譯期生成一個SchemeMapImpl類,其實現(xiàn)了SchemeMap類而每個scheme的注解對應一個SchemeItem:在編譯期通過SchemeProcessor生成的SchemeMapImpl大概是這樣子的:整體的設計以及實現(xiàn)思路就是這樣,剩下的就是各種編碼細節(jié)了。有興趣的可以通過QMUISchemeHandler#handle()進行追蹤下,或者看看SchemeProcessor是如何做代碼生成的。這個功能看上去簡單,其實也包括了Builder模式、責任鏈模式、工廠方法等設計模式的運用,還有SchemeMatcher、SchemeItem等對面向對象的接口、繼承、多態(tài)等的運用。讀

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論