日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MVPArms MVP+Dagger+Rxjava+Retrofit快速集成框架

發布時間:2023/12/9 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MVPArms MVP+Dagger+Rxjava+Retrofit快速集成框架 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文地址: http://www.jianshu.com/p/48e66e879061

前言

  • 今年的Android技術圈中MVP,Dagger2,Rxjava,Retrofit這些詞匯非常火,隨便打開一個技術論壇都充斥著大量的關于這些技術的文章,Github也充斥著各種以基于MVP+Retrofit+RxJava+Dagger2+MaterialDesign開發的xxxx為標題的開源項目或Demo.

  • 但是大家這么熱心的開源此類項目,一直重復的做著同樣的事教授大家使用的方式和技巧有沒有想過依賴一個第三方庫,就可以快速的搭建此類框架?

What is MVPArms?

  • MVPArms是一個集成了大量Android主流框架,并且全部使用Dagger2管理,以及提供API將所有庫連接起來方便使用,還提供詳細的Wiki文檔.

  • 它可以使開發后面的所有項目都不用重復的復制粘貼(用過此類框架的朋友應該知道,這些庫都依賴其它的庫,就算一個build.gradle都會浪費很多時間),一個依賴省去很多煩惱,而且對于新手來說這些框架難的不僅僅是API的使用,更難的是怎么把它們結合到一起,應對各種場景的使用.

  • 對于一個新的Android項目,特別是熟練使用Dagger2Rxjava的開發者,你們只需要將此項目Clone下來,Demo只實現了一個頁面,將此頁面刪除掉,添加所需要的Retrofit API,你的框架就搭建好了,你就可以直接使用Demo進行后續的開發,包結構也適合后面的擴展.

Notice

  • 溝通交流群:

  • 一鍵生成 MVP , Dagger2 相關類(開發神器,不看后悔!)

  • MVPArms 學習項目
  • 更新日志
  • 常見 Issues
  • 意見收集
  • 一行代碼監聽 App 中所有網絡鏈接的上傳以及下載進度,以及 Glide 加載進度
  • 以最簡潔的 Api 讓 Retrofit 同時支持多個 BaseUrl 以及動態改變 BaseUrl

Feature

  • 通用框架,適合所有類型的項目,支持大型項目的開發,兼容組件化開發,可作為組件化的 Base

  • 框架高度可自定義化,可在不修改框架源碼的情況下對 Retoift , Okhttp , RxCache , Gson 等框架的特有屬性進行自定義化配置,可在不修改框架源碼的情況下向 BaseApplication , BaseActivity , BaseFragment 的對應生命周期中插入代碼

  • 全局使用 Dagger2 管理,獨創的建造者模式 Module ,可實現使用 Dagger2 向框架任意位置注入自定義參數(將所有模塊使用
    Dagger2 連接起來,絕不是簡單的使用)
  • 全局監聽整個 App 所有 Activity 以及 Fragment 的生命周期(包括三方庫),并可向其生命周期內插入代碼
  • 全局監聽 Http Request(請求參數, Headers …), Response (服務器返回的結果, Headers ,耗時 …)等信息(包括 Glide 的請求),可解析 json 后根據狀態碼做相應的全局操作以及數據加密, Cookie 管理等操作
  • 全局管理所有 Activity (包括三方庫的 Activity),可實現在整個 App 任意位置,退出所有 Activity ,以及拿到前臺 Activity 做相應的操作(如你可以在 App 任何位置做彈出 Dialog 的操作)
  • 全局 Rxjava 錯誤處理,錯誤后自動重試,捕捉整個應用的所有錯誤
  • 全局 UI 自適應
  • 圖片加載類 ImageLoader 使用策略模式和建造者模式,輕松切換圖片加載框架,方便功能擴展
  • 修改包名后就可以直接使用,快速接入(老項目接入請按下面的步驟)

Where?

MVPArms歡迎StarFork

Architectural

Package Structure

How?

Wiki

詳細用法請參照Wiki,下面只是簡單的介紹下MVP

Contract

根據Google官方的MVP項目,可以在Contract中定義MVP的接口,便于管理,此框架使用Dagger注入Presenter無需定義Presenter接口,所以Contract只定義ModelView的接口

public interface UserContract {//對于經常使用的關于UI的方法可以定義到BaseView中,如顯示隱藏進度條,和顯示文字消息interface View extends BaseView {void setAdapter(DefaultAdapter adapter);void startLoadMore();void endLoadMore();}//Model層定義接口,外部只需關心model返回的數據,無需關心內部細節,及是否使用緩存interface Model {Observable<List<User>> getUsers(int lastIdQueried, boolean update);} }

View

一般讓ActivityFragment實現Contract中定義的View接口,供Presenter調用對應方法操作UI,BaseActivity默認注入Presenter,如想使用Presenter,必須指定Presenter的范型,和實現setupActivityComponent來提供Presenter需要的ComponentModule

public class UserActivity extends WEActivity<UserPresenter> implements UserContract.View {@Overrideprotected void setupActivityComponent(AppComponent appComponent) {DaggerUserComponent.builder().appComponent(appComponent).userModule(new UserModule(this)).build().inject(this);}@Overrideprotected View initView() {return LayoutInflater.from(this).inflate(R.layout.activity_user, null, false);}@Overrideprotected void initData() {} }

Model

Model實現ContractModel接口,并且繼承BaseModel,指定范型為ServiceManagerCacheManager,然后通過兩個Manager拿到需要的ServiceCachePresenter提供需要的數據(是否使用緩存請自行選擇,Presenter無需關心細節)

public class UserModel extends BaseModel<ServiceManager,CacheManager> implements UserContract.Model{private CommonService mCommonService;private CommonCache mCommonCache;public UserModel(ServiceManager serviceManager, CacheManager cacheManager) {super(serviceManager, cacheManager);this.mCommonService = mServiceManager.getCommonService();this.mCommonCache = mCacheManager.getCommonCache();}@Overridepublic Observable<List<User>> getUsers(int lastIdQueried, boolean update) {}}

Presenter

PresenterMVP中的大部分的作用為通過從Model層接口獲取數據,在調用View層接口顯示數據,首先實現BasePresenter,指定ModelView的范型,注意一定要指定Contract中定義的接口,Presenter需要的ModelView,都使用Dagger2注入,這樣即解藕又方便測試,怎么注入?

@ActivityScope public class UserPresenter extends BasePresenter<UserContract.Model, UserContract.View> {@Injectpublic UserPresenter(UserContract.Model model, UserContract.View rootView) {super(model, rootView);}//這里定義業務方法,相應用戶的交互public void requestUsers(final boolean pullToRefresh) {} }

Acknowledgement

感謝本框架所使用到的所有三方庫的Author,以及所有為Open Sourece做無私貢獻的DeveloperOrganizations,使我們能更好的工作和學習,本人也會將業余時間回報給開源社區

  • MvpGoogle官方出品的Mvp架構項目,含有多個不同的架構分支(此為Dagger分支).
  • Dagger2Google根據Square的Dagger1出品的依賴注入框架,通過Apt編譯時生成代碼,性能優于使用運行時反射技術的依賴注入框架.
  • Rxjava提供優雅的響應式Api解決異步請求以及事件處理.
  • RxAndroid為Android提供響應式Api.
  • Rxlifecycle在Android上使用rxjava都知道的一個坑,就是生命周期的解除訂閱,這個框架通過綁定activity和fragment的生命周期完美解決.
  • RxCache是使用注解為Retrofit加入二級緩存(內存,磁盤)的緩存庫.
  • RxErroHandler 是 Rxjava 的錯誤處理庫,可在出現錯誤后重試.
  • RxPermissions用于處理Android運行時權限的響應式庫.
  • RetrofitSquare出品的網絡請求庫,極大的減少了http請求的代碼和步驟.
  • Okhttp同樣Square出品,不多介紹,做Android都應該知道.
  • Autolayout鴻洋大神的Android全尺寸適配框架.
  • GsonGoogle官方的Json Convert框架.
  • ButterknifeJakeWharton大神出品的view注入框架.
  • Androideventbus一個輕量級使用注解的Eventbus.
  • TimberJakeWharton大神出品Log框架容器,內部代碼極少,但是思想非常不錯.
  • Glide此庫為本框架默認封裝圖片加載庫,可參照著例子更改為其他的庫,Api和Picasso差不多,緩存機制比Picasso復雜,速度快,適合處理大型圖片流,支持gfit,Fresco太大了!,在5.0以下優勢很大,5.0以上系統默認使用的內存管理和Fresco類似.
  • LeakCanarySquare出品的專門用來檢測Android和Java的內存泄漏,通過通知欄提示內存泄漏信息.

  • Hello 我叫Jessyan,如果您喜歡我的文章,可以在以下平臺關注我��
    * GitHub: https://github.com/JessYanCoding
    * 掘金: https://gold.xitu.io/user/57a9dbd9165abd0061714613
    * 簡書: http://www.jianshu.com/u/1d0c0bc634db

    總結

    以上是生活随笔為你收集整理的MVPArms MVP+Dagger+Rxjava+Retrofit快速集成框架的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。