APP框架梳理

題記

畢業3年了!猶豫!彷徨!最近處於一個瓶頸期,公司的代碼已經得心應手,但是由於業務原因,網絡加載和最新的開源庫用的較少,感覺少點什麼,就想沉下心來整理一個通用的網絡加載框架,流行的技術重新刷一遍,本文就記錄下關鍵節點。

1 準備工作

初步敲定MVP+retrofit+RxJava作爲基礎,言不多說,開始拼湊~
MVP的好處不用贅述了,什麼業務邏輯與UI分離一類的等等,隨便百度一片博客都講得天花亂墜,如需細究—請點這裏。我們這裏要做一個通用的lib方便隨時引用。接下來準備工作開始。

1.1 MVpHelper

推薦一下這個插件,直接在File->Setting->Plugs裏面搜索就能直接下載。這個插件好處是能夠快速生成model,view,presenter。
在這裏插入圖片描述
入上圖所示,需要新建一個directory,新建一個XXContract,放在右邊類名上 alt+insert-> MvpHelper,就會直接分包生成好XX的MVP模板類。
在這裏插入圖片描述

1.2 Butterknife

Butterknife作爲View注入框架再好用不過了,能夠省略很多代碼,所以框架考入引用。
gradle引用:

    //butterknife
    implementation 'com.jakewharton:butterknife:10.0.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'

詳細使用:官網

1.3 Preconditions

Google Guava中提供了一個Preconditions類,用於校驗入參的正確性。主要使用在進行業務邏輯代碼前進行前置判斷(參數檢驗)。並且避免了冗長的if語句。guava將所有檢驗的API都放置於Preconditions類中。guava裏面還有有很多有意思的東西,有空還是要捋一遍。

方法聲明(不包括額外參數 ) 描述 檢查失敗時拋出的異常
checkNotNull(T) 檢查value是否爲null,該方法直接返回value,因此可以內嵌使用checkNotNull。 NullPointerException
checkArgument(boolean) 檢查boolean是否爲true,用來檢查傳遞給方法的參數。 IllegalArgumentException

Google Guava倉庫

1.4 Retrofit+RxXX
1.4.1 Retrofit

Retrofit是square開源的網絡Restful請求框架,底層是基於okhttp的,同時也是基於動態代理來實現的。開發者只需要定義接口就可以了,使用註解可以表示該接口請求的請求方式、參數、url等,同時也通俗易懂,減少代碼量。
Retrofit

1.4.2 RxXX(reactivex)系列

爲什麼說reactivex系列呢,因爲我們要引用的有RxJava,RxAndroid,RxLifecycle。

RxJava

implementation "io.reactivex.rxjava3:rxjava:3.x.y"

RxJava作爲一個觀察者模式的實現已經流行的好久,符合響應式編程的潮流,好處多多。

  • 簡化邏輯,解耦了各個模塊操作(stream優雅的執行操作)
  • 操作符強大,可以實現各種功能(API完善,操作多樣化)
  • 線程切換方便(發送和接收切換線程簡單)
  • 報錯穩固(固定的Error方法回調)

RxLifecycle

implementation  ' com.trello.rxlifecycle3:rxlifecycle-android-lifecycle:3.0.0 '

如果引用了RxJava,在使用的時候,如果沒有及時解除訂閱,在退出View的時候,異步線程還在執行。這時對View還存在引用,相互引用導致死鎖,此時就會產生內存泄漏。
RxLifecycle就是爲了解決rxjava導致的內存泄漏而產生的!

2 代碼上手

代碼下載
emmmm…最近突然有點忙,先把搞好的工程代碼上傳,文字一點一點補吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章