這是本系列文章的第二部分裁眯。在第一部分偎捎,我們提出了 MVP 的概念蠢终,并做出了一個安卓應(yīng)用架構(gòu)的藍圖序攘。如果你還沒有閱讀第一部分,那么大部分接下來的文章將對你沒有多大意義寻拂。所以程奠,在你繼續(xù)讀下去之前,瀏覽一遍第一部分祭钉。
基于在第一部分中提出的藍圖瞄沙,我們將開發(fā)一個成熟的安卓應(yīng)用,通過它實現(xiàn) MVP 架構(gòu)慌核。
MVP 項目的 GitHub repo 地址:
MindorksOpenSource/android-mvp-architecture
本項目旨在提供一種正確的安卓應(yīng)用架構(gòu)方式距境。它包括了大多數(shù)安卓應(yīng)用的全部代碼模塊。
這個項目剛開始看起來會很復(fù)雜垮卓,但是隨著你花時間去探索垫桂,你看它也會變得更清晰明了。這個項目是用 Dagger2, Rxjava, FastAndroidNetworking 和 PlaceHolderView 實現(xiàn)的粟按。
把這個項目當(dāng)作一個學(xué)習(xí)案例诬滩。研究它的每一行代碼。如果這里面有任何 bug 或者你能想出一個更好的邏輯實現(xiàn)灭将,創(chuàng)建一個 pull request疼鸟。我們在逐步寫測試。歡迎你為測試做貢獻宗侦,并通過 pull request 的方式提交愚臀。
開發(fā)出的應(yīng)用的截屏如下:
這個應(yīng)用有一個登錄頁面和一個主頁面。登錄頁面實現(xiàn)了 Google矾利,F(xiàn)acebook 和服務(wù)器登錄姑裂。Google 和 Facebook 登錄是通過啞 API 實現(xiàn)的。登錄是基于獲取 access token 的男旗,接下來的調(diào)用都被這個 token 所保護舶斧。主屏幕創(chuàng)建了和 MVP 相關(guān)問題的答題卡。這個 repo 包含了任何應(yīng)用的大多數(shù)組件所需的基本框架察皇。
讓我們看一眼項目的結(jié)構(gòu):
整個應(yīng)用被打包為五個部分:
data: 它包含所有訪問和操控數(shù)據(jù)的組件茴厉。
di: 使用 Dagger2 提供依賴的類。
ui: View 類和它們對應(yīng)的 Presenter什荣。
service: 應(yīng)用需要的服務(wù)矾缓。
utils: 工具類。
類的設(shè)計方法是這樣的:它們應(yīng)該能夠被繼承稻爬,并能最大化代碼復(fù)用嗜闻。
簡單的想法包含復(fù)雜的概念。
有很多非常有趣的部分桅锄。但如果我嘗試同時解釋所有的部分琉雳,信息量就太大了样眠。所以,我認(rèn)為最好的做法是解釋核心的理念翠肘。這樣檐束,讀者就可以通過瀏覽項目 repo 來理解這些代碼。我建議你至少花一周時間研究這個項目束倍。按照時間從后到前的順序研究這些主要的類被丧。
研究 build.gradle 并尋找它使用的所有依賴。
探索 data 包以及 helper 類的實現(xiàn)肌幽。
ui base 包創(chuàng)建了Activity, Fragment, SubView 和 Presenter 的基類晚碾。所有其他相關(guān)的組件都應(yīng)該從這些類派生。
di 包是應(yīng)用中負(fù)責(zé)提供依賴的類喂急。要理解依賴注入格嘁,請瀏覽我發(fā)表的由兩部分組成的文章,Dagger2 part 1?和?Dagger2 part 2廊移。
資源:Styles, fonts, drawable糕簿。
原文地址:Essential Guide For Designing Your Android App Architecture: MVP: Part 2