Android開發架構FastAndroid詳解,androidfastandroid
項目:https://github.com/huntermr/FastAndroid
前言:對於很多Android開發初學者來說,有很多地方都會使人頭疼,如:圖片載入、OOM、網路訪問、資料庫操作、json解析等等因為不熟悉所以會走很多的歪路。出於引領初學者正式走進Android開發道路的目的,綜合考慮市面上常見的開發架構發現,要麼是比較複雜難懂,要麼是對於效能最佳化的不夠好;所以作者就將市面上在各個方面都表現較好的開源項目進行整合,加入了mvp模式,使初學者上手就能開發出比較健壯完善的項目。
項目介紹:
本架構整合了網路訪問、資料庫操作、圖片載入(無需擔心OOM)及緩衝、json解析、View註解
項目架構採用MVP模式,極大的對View和Model解耦,項目中帶有使用說明,查看源碼即可
整合的開源項目:
網路訪問:Volley 、 Xutils-http模組
資料庫:GreenDao(對於GreenDao的使用方法,請訪問http://blog.csdn.net/ht_android/article/details/44782539)
圖片載入及緩衝:universal-image-loader
json解析:Gson
View註解:butterknife
包結構:
com.android.volley:Volley相關,添加了對於Cookie的支援
com.example.android:架構主體
com.example.android.adapter:存放自訂Adapter
com.example.android.app:關於項目的一些全域配置及檔案
——AppManager:自訂Activity堆棧管理類
——Constants:存放全域變數
——MyApplication:自訂Application,用於初始化操作
——Setting:公用參數配置,封裝了SharedPreferences
com.example.android.async:存放自訂AsyncTask
com.example.android.base:存放基類檔案
——BaseActivity:基類Activity,所有Activity繼承自此,可自行修改
——BaseResponse:基類響應類,用於驗證伺服器的響應及解析資料
——IBaseView:所有View介面繼承此介面,用於進行一些通用視圖操作
com.example.android.bean.net:關於網路訪問的bean
——request:網路訪問請求bean
——response:網路訪問響應bean
com.example.android.dao:封裝資料庫操作
com.example.android.exception:異常捕獲類
com.example.android.listener:存放Presenter的監聽
com.example.android.model:存放資料邏輯處理介面
——impl:存放model實作類別
com.example.android.net:網路訪問相關
——NetCenter:封裝網路訪問常用操作,將所有網路介面在此封裝以便統一調用
——StringPostRequest:自訂Volley的Request,複寫接收post參數方法
——URLs:存放Url訪問路徑
com.example.android.presenter:存放Presenter
com.example.android.ui:存放Activity、自訂View等等
——custom:存放自訂View
com.example.android.utils:常用工具類
com.example.android.view:存放view介面
com.lidroid.xutils:Xutils-http模組
架構使用方法:
對於Mvp模式,主要目的是為瞭解耦,將邏輯分離出來,否則有些初學者非常容易在一個Activity裡面寫很多代碼,項目的可維護性簡直令人崩潰。
Presenter:針對不同模組寫不同的Presenter,這個類和mvc中的控制器類似,但他能保證view和model之間不能直接存取。Presenter中接收了View介面以及執行個體化了Model,當調用Model中相應方法時可以傳入回調。
View:定義View的介面,然後Activity去實現介面中的方法,並執行個體化Presenter,執行個體化時需要傳入view介面。當使用者觸發了某個操作如點擊按鈕,則開始調用Presenter的相應方法去進行處理,Presenter處理完成後,會調用已實現View介面的方法
Model:接收Presenter的相應回調,當處理完資料邏輯後,調用該回調用於返回資料給Presenter。
以上就是關於架構中mvp的大致使用方式,其他方面請自行翻看源碼或查閱相關資料。