MVVM的好處還有很多,但是大家對MVVM為什麼會有這些好處還有很多疑問,
MVVM為什麼要分5層?
MVVM每一層都是幹什麼的?
LiveData怎麼用?
MVVM具體怎麼落地開發?
有問題不可怕,就怕沒有問題,那麼接下來就請帶着這些問題繼續學習吧。
什麼是LiveData
LiveData是MVVM架構中做資料綁定的工具。本質上是個觀察者模式實作的一套有生命周期感覺能力的資料監聽方案。LiveData不是一個單獨的東西,其背後還有Lifecycle、Observe等知識。LiveData就是一個設定資料并且通過Observe監聽資料的工具。
LiveData在MVVM中的作用
LiveData在MVVM中負責監聽資料變化,比如有個View需要資料填充,然後這個View作為LiveData的觀察者,當DataSource中有資料更新時,通過LiveData通知所有的觀察者,這樣View就會收到資料。這樣資料就更新到View層了。是以顯而易見,LiveData就是MVVM中的資料命脈,沒有LiveData,MVVM就無法正常運作。
LiveData具體怎麼用,有哪些用法
LiveData本身是一個抽象類,有兩個子類MutableLiveData和MediatorLiveData,MutableLiveData倒是沒有什麼特别的,基本就是一個套殼實作類,MediatorLiveData也沒有什麼特别的,多了幾個方法, 其中比較常用的是addSource方法,這個後面會再介紹。
LiveData的使用非常簡單,主要分為兩個,一個是觀察資料,一個是設定資料。
觀察資料代碼:
LiveData<String> liveData=new MutableLiveData<>();
liveData.observe(this,new Observe(){
@Override
public void onChanged(String s){
//do something
}
});
observe方法有兩個參數,一個是接收一個LifecycleOwner另一個是接收Observe對象。這個LifecycleOwne參數本質上是将視圖元件(Activity、Fragment)的生命周期傳遞到LiveData中去,這樣LiveData就會有生命周期感覺功能,比如發起一個網絡請求,在回調之前頁面銷毀了,那麼LiveData就會感覺到頁面銷毀了進而取消資料的通知。這樣就會從很多場景避免由于頁面銷毀而導緻崩潰的發生。
再來看看怎麼設定資料:
LiveData<String> liveData=new MutableLiveData<>();
liveData.setValue("test");
LiveData<String> liveData=new MutableLiveData<>();
liveData.postValue("test");