MVP:有呼吸的Android架構
想必大家對MVP框架都比較熟悉了,今天和大家分享幾個在MVP框架中比較核心的要點。
思考幾個問題:
(1)後臺非同步處理任務沒有完成,presenter會持有View的引用,此時返回退出了Activity,後臺非同步的動作不會立即停止,這裡就會有記憶體洩漏的隱患。
解決方案:在presenter中加入管理view生命週期的方法。
方案原理:presenter中增加了類似的生命週期的方法,在退出Activity的時候取消持有Activity。
(2)在銷燬後需要思考一點,後臺的延時操作返回時,這個時候view被銷燬了,如果接著去呼叫view的方法就會丟擲空指標異常。
解決方案:在回用view的方法時,首先判斷當前view是否已被置為null。
方案原理:根據當前的狀態來控制是否需要回到View的方法,避免了在Activity被回收後,繼續呼叫view的回撥方法處理更新控制元件,導致程式crash。
(3)因為presenter的生命週期方法都會有,所以每個Activity去繫結View和解綁View就會有很多重複的程式碼。
解決方案:所以我們定義一個BasePresenter,在其中定義繫結View和解除繫結的方法(BasePresenter要使用泛型,因為不能限定死傳入的View。)。
方案原理:利用泛型和繼承的方式構建動態化。
(4)BaseView:一般顯示載入內容的介面,都會有showLoading和hideLoading兩個方法。
解決方案:定義BaseView。
方案原理:利用繼承的優點,子類View就可以直接繼承自BaseView,共享方法和變數。
ok,直接看程式碼。
相關文章
- Android MVP 架構AndroidMVP架構
- Android-MVP架構AndroidMVP架構
- Android架構系列-MVP架構的實際應用Android架構MVP
- Android架構系列-基於MVP建立適合自己的架構Android架構MVP
- android-MVP架構中Presenter的單元測試AndroidMVP架構
- Android 架構設計:MVC、MVP、MVVM和元件化Android架構MVCMVPMVVM元件化
- Android MVP架構改造~如何重用頂層業務AndroidMVP架構
- MVC、MVP、MVVM,談談我對Android應用架構的理解MVCMVPMVVMAndroid應用架構
- 【Android架構】基於MVP模式的Retrofit2+RXjava封裝(一)Android架構MVP模式RxJava封裝
- Android MVP架構從入門到精通-真槍實彈AndroidMVP架構
- Android從零開始(第三篇)MVP架構搭建AndroidMVP架構
- MVP應用架構模式MVP應用架構模式
- iOS開發-MVP架構模式iOSMVP架構模式
- Kotlin如何實現MVP架構KotlinMVP架構
- 【Android架構】基於MVP模式的Retrofit2+RXjava封裝之多Url(七)Android架構MVP模式RxJava封裝
- 設計Android應用程式架構的基本指南:MVP:第2部分Android架構MVP
- 【Android架構】基於MVP模式的Retrofit2+RXjava封裝之檔案下載(二)Android架構MVP模式RxJava封裝
- Android架構設計:手把手教你擼一個簡潔而強大的MVP框架!Android架構MVP框架
- 【Android架構】基於MVP模式的Retrofit2+RXjava封裝之斷點下載(五)Android架構MVP模式RxJava封裝斷點
- 【Android架構】基於MVP模式的Retrofit2+RXjava封裝之檔案上傳(三)Android架構MVP模式RxJava封裝
- 【Android架構】基於MVP模式的Retrofit2+RXjava封裝之常見問題(四)Android架構MVP模式RxJava封裝
- Android:會呼吸的懸浮氣泡Android
- Android 架構元件 - 讓天下沒有難做的 AppAndroid架構元件APP
- iOS MVC、MVVM、MVP架構模式淺淺析iOSMVCMVVMMVP架構模式
- 看完不會寫MVP架構我跪搓板MVP架構
- iOS架構淺談從 MVC、MVP 到 MVVMiOS架構MVCMVPMVVM
- 【Android架構】基於MVP模式的Retrofit2+RXjava封裝之資料預處理(六)Android架構MVP模式RxJava封裝
- Android架構合集Android架構
- 帶你動手實現 MVP+Clean架構!MVP架構
- [譯]iOS架構模式——解密MVC、MVP、MVVM和VIPERiOS架構模式解密MVCMVPMVVM
- 我的Android重構之旅:架構篇Android架構
- Android架構元件-DataBinding的使用Android架構元件
- Android:聊聊我所理解的MVPAndroidMVP
- 手把手寫一個Clean(+mvp+rxjava)架構的DemoMVPRxJava架構
- MVC、MVP、BloC、Redux四種架構在Flutter上的嘗試MVCMVPBloCRedux架構Flutter
- iOS架構設計:揭祕MVC, MVP, MVVM以及VIPERiOS架構MVCMVPMVVM
- MVP架構由淺入深篇一(基礎版)MVP架構
- Android Flux架構初探AndroidUX架構
- Android MVP 最佳實踐AndroidMVP