MVP:有呼吸的Android架構

Songlcy發表於2016-06-16

想必大家對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,直接看程式碼。



















相關文章