Android—MVC、MVP、MVVM
MVC:
- 視圖(View):用戶界面。
- 控制器(Controller):業務邏輯
- 模型(Model):數據保存
操作方式: 用戶操作View或Controller
缺點:View與Model之間存在關系,Activity既是View也是Controller,代碼量大。
MVP:
Controller改為Presenter
MVVM:
Presenter改為ViewModel
采用雙向綁定(data-binding):View的變動,自動反映在 ViewModel,反之亦然。用到了檢查者模式。
優點:
低耦合:View和Model不相互聯系
可重用性:你可以把一些視圖邏輯放在一個ViewModel里面,讓很多view重用這段視圖邏輯
Android的ViewModel的生命周期貫穿整個應用。
ViewModel:
LiveData:
LiveData是一個在線程間傳遞數據的容器。當后臺線程得到數據后,通過setValue()、postValue()方法投遞數據。其他線程通過getValue()得到數據。
setValue()只能在主線程中調用,postValue()可以在任何線程中調用。
LiveData具有保證UI和狀態一致、避免內存泄漏、避免手動管理生命周期等優點。
在調用observe()時,第一個參數是LifecycleOwner,第二個參數是Observer。LiveData建立一個LifecyleBoundObserver對象,將這兩個參數綁定到一起,來接收Lifecycle的生命周期更新和LiveData的數據更新。LifecycleBoundObserver是一個的內部類,它持有了LiveData引用。當生命周期發生變化(LifecycleRegistry.handleLifecyleEvent)時,LifecycleBoundObserver調用LiveData的dispatchingValue()方法,獲取最新數據。
LiveData的特點:
- 采用觀察者模式,數據發生改變,可以自動回調(比如更新UI)。
- 不需要手動處理生命周期,不會因為Activity的銷毀重建而丟失數據。
- 不會出現內存泄漏。
- 不需要手動取消訂閱,Activity在非活躍狀態下(pause、stop、destroy之后)不會收到數據更新信息。
ViewModel+LiveData 實現Fragment之間通信
總結
以上是生活随笔為你收集整理的Android—MVC、MVP、MVVM的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android—屏幕适配和卡顿优化
- 下一篇: Android—ActivityThre