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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

MVPArms MVP快速集成框架

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

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

Logo

前言

  • 今年的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

  • 溝通交流群: QQ群 455850365 | 301733278

  • 一鍵生成模板, 開發神器, 不看后悔! (MVPArms 的所有規范現已整合到以下兩種模板中, 讓您無需理解 Wiki 文檔便可快速開啟 MVPArms 的世界)

    • 一鍵生成 app Module (使用此 Module 級 模板可直接生成 Wiki 文檔第一章 開發準備 的所有內容, 快速并且零錯誤)
    • 一鍵生成 MVP, Dagger2 相關類 (使用此 頁面級 模板可直接生成 Wiki 文檔第二章 快速開始 的所有內容, 快速并且零錯誤)
  • MVPArms 學習項目

  • 更新日志

  • 常見 Issues (開發必看, 節約您的時間!)

  • 意見收集

擴展項目, 了解一下:

  • MVPArms 官方組件化方案 ArmsComponent

  • 今日頭條屏幕適配方案終極版,一個極低成本的 Android 屏幕適配方案

  • 改造 Android 官方架構組件 ViewModel

  • 一行代碼監聽 App 中所有網絡鏈接的上傳以及下載進度, 以及 Glide 加載進度

  • 以最簡潔的 Api 讓 Retrofit 同時支持多個 BaseUrl 以及動態改變 BaseUrl

Feature

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

  • Base 基類(BaseActivity, BaseFragment, BaseApplication ...)

  • MVP 基類(IModel, IVIew, IPresenter ...)

  • 框架高度可自定義化 (ConfigModule), 可在不修改框架源碼的情況下對 Retoift, Okhttp, RxCache, Gson 等框架的特有屬性進行自定義化配置, 可在不修改框架源碼的情況下向 BaseApplication, BaseActivity, BaseFragment 的對應生命周期中插入任意代碼, 并且框架獨有的 ConfigModule 配置類, 可在不修改框架源碼的情況下為框架輕松擴展任何新增功能

  • 獨創的 RxLifeCycle 應用方式, 可在不繼承 RxLifeCycle 提供的 ActivityFragment 的情況下, 正常使用 RxLifeCycle 的所有功能, 且使用方式不變

  • 獨創的建造者模式 Module (GlobalConfigModule), 可實現使用 Dagger2 向框架任意位置注入自定義參數, 可輕松擴展任意自定義參數

  • 全局使用 Dagger2 管理 (將所有模塊使用 Dagger2 連接起來, 絕不是簡單的使用)

  • 全局監聽整個 App 所有 Activity 以及 Fragment 的生命周期 (包括三方庫), 并可向其生命周期內插入任意代碼

  • 全局監聽 Http Request(請求參數, Headers ...), Response (服務器返回的結果, Headers, 耗時 ...)等信息(包括 Glide 的請求), 可解析 json 后根據狀態碼做相應的全局操作以及數據加密, Cookie 管理等操作

  • 全局管理所有 Activity (包括三方庫的 Activity), 可實現在整個 App 任意位置, 退出所有 Activity, 以及拿到前臺 Activity 做相應的操作(如您可以在 App 任何位置做彈出 Dialog 的操作)

  • 全局 Rxjava 錯誤處理, 錯誤后自動重試, 捕捉整個應用的所有錯誤

  • 全局 UI 自適應

  • 圖片加載類 ImageLoader 使用策略模式和建造者模式, 輕松切換圖片加載框架, 方便功能擴展

  • 網絡請求日志打印封裝(提供解析后的服務器的請求信息和服務器的響應信息, 按可自定義的任意格式輸出打印日志, 內置一個漂亮的打印格式模板)

  • 框架內自有組件的緩存機制封裝(框架內可緩存內容的組件都提供有接口供外部開發者自定義緩存機制)

  • 代碼生成插件(MVPArms 全家桶一鍵生成所需要的所有類文件)

  • Demo 修改包名后就可以直接使用, 快速接入

Where?

MVPArms歡迎StarFork

Architectural

Architecture

Package Structure

package

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,使我們能更好的工作和學習,本人也會將業余時間回報給開源社區

  • Mvp 是 Google 官方出品的 Mvp 架構項目,含有多個不同的架構分支(此為 Dagger 分支).
  • Dagger2 是 Google 根據 Square 的 Dagger1 出品的依賴注入框架,通過 Apt 編譯時生成代碼,性能優于使用運行時反射技術的依賴注入框架.
  • RxJava 提供優雅的響應式 API 解決異步請求以及事件處理.
  • RxAndroid 為 Android 提供響應式 API.
  • Rxlifecycle,在 Android 上使用 RxJava 都知道的一個坑,就是生命周期的解除訂閱,這個框架通過綁定 Activity 和 Fragment 的生命周期完美解決該問題.
  • RxCache 是使用注解,為 Retrofit 加入二級緩存 (內存,磁盤) 的緩存庫.
  • RxErroHandler 是 RxJava 的錯誤處理庫,可在出現錯誤后重試.
  • RxPermissions 用于處理 Android 運行時權限的響應式庫.
  • Retrofit 是 Square 出品的網絡請求庫,極大的減少了 Http 請求的代碼和步驟.
  • Okhttp 同樣 Square 出品,不多介紹,做 Android 的都應該知道.
  • AndroidAutoSize 是今日頭條屏幕適配方案終極版,一個極低成本的 Android 屏幕適配方案,該庫沒有引入到 Arms,所以框架使用者可自由選擇屏幕適配方案.
  • Gson 是 Google 官方的 Json Convert 框架.
  • Butterknife 是 JakeWharton 大神出品的 View 注入框架.
  • AndroidEventBus 是一個輕量級的 EventBus,該庫沒有引入到 Arms,所以框架使用者可自由選擇 EventBus.
  • Timber 是 JakeWharton 大神出品的 Log 框架容器,內部代碼極少,但是思想非常不錯.
  • Glide 是本框架默認封裝到擴展庫 arms-imageloader-glide 中的圖片加載庫,可參照著 Wiki 更改為其他的圖片加載庫,Glide 的 API 和 Picasso 差不多,緩存機制比 Picasso 復雜,速度快,適合處理大型圖片流,支持 gif 圖片,Fresco 太大了!在 5.0 以下優勢很大,5.0 以上系統默認使用的內存管理和 Fresco 類似.
  • LeakCanary 是 Square 出品的專門用來檢測 Android 和 Java 的內存泄漏,并通過通知欄提示內存泄漏信息.

  • Hello 我叫 JessYan,如果您喜歡我的文章,可以在以下平臺關注我

    • 個人主頁: http://jessyan.me
    • GitHub: https://github.com/JessYanCoding
    • 掘金: https://gold.xitu.io/user/57a9dbd9165abd0061714613
    • 簡書: http://www.jianshu.com/u/1d0c0bc634db
    • 微博: http://weibo.com/u/1786262517

    總結

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

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