這是本系列文章的第二部分。在第一部分,我們提出了 MVP 的概念,并做出了一個安卓應用架構的藍圖。如果你還沒有閱讀第一部分,那么大部分接下來的文章將對你沒有多大意義。所以,在你繼續(xù)讀下去之前,瀏覽一遍第一部分。
基于在第一部分中提出的藍圖,我們將開發(fā)一個成熟的安卓應用,通過它實現(xiàn) MVP 架構。
MVP 項目的 GitHub repo 地址:
MindorksOpenSource/android-mvp-architecture
本項目旨在提供一種正確的安卓應用架構方式。它包括了大多數(shù)安卓應用的全部代碼模塊。
這個項目剛開始看起來會很復雜,但是隨著你花時間去探索,你看它也會變得更清晰明了。這個項目是用 Dagger2, Rxjava, FastAndroidNetworking 和 PlaceHolderView 實現(xiàn)的。
把這個項目當作一個學習案例。研究它的每一行代碼。如果這里面有任何 bug 或者你能想出一個更好的邏輯實現(xiàn),創(chuàng)建一個 pull request。我們在逐步寫測試。歡迎你為測試做貢獻,并通過 pull request 的方式提交。
開發(fā)出的應用的截屏如下:



這個應用有一個登錄頁面和一個主頁面。登錄頁面實現(xiàn)了 Google,F(xiàn)acebook 和服務器登錄。Google 和 Facebook 登錄是通過啞 API 實現(xiàn)的。登錄是基于獲取 access token 的,接下來的調用都被這個 token 所保護。主屏幕創(chuàng)建了和 MVP 相關問題的答題卡。這個 repo 包含了任何應用的大多數(shù)組件所需的基本框架。
讓我們看一眼項目的結構:
整個應用被打包為五個部分:
data: 它包含所有訪問和操控數(shù)據(jù)的組件。
di: 使用 Dagger2 提供依賴的類。
ui: View 類和它們對應的 Presenter。
service: 應用需要的服務。
utils: 工具類。
類的設計方法是這樣的:它們應該能夠被繼承,并能最大化代碼復用。

簡單的想法包含復雜的概念。
有很多非常有趣的部分。但如果我嘗試同時解釋所有的部分,信息量就太大了。所以,我認為最好的做法是解釋核心的理念。這樣,讀者就可以通過瀏覽項目 repo 來理解這些代碼。我建議你至少花一周時間研究這個項目。按照時間從后到前的順序研究這些主要的類。
研究 build.gradle 并尋找它使用的所有依賴。
探索 data 包以及 helper 類的實現(xiàn)。
ui base 包創(chuàng)建了Activity, Fragment, SubView 和 Presenter 的基類。所有其他相關的組件都應該從這些類派生。
di 包是應用中負責提供依賴的類。要理解依賴注入,請瀏覽我發(fā)表的由兩部分組成的文章,Dagger2 part 1?和?Dagger2 part 2。
資源:Styles, fonts, drawable。
原文地址:Essential Guide For Designing Your Android App Architecture: MVP: Part 2