使用示例
LiveData操作符可以將一個LiveData轉換為另一個LiveData
當源LiveData發生變更時,會自動通知目標LiveData
val srcLiveData : LiveData<T>val dstLiveData : LiveData<R>dstLiveData = srcLiveData.distinctUntilChanged().switchMap{return@switchMap LiveData<R>}.map{return@map R}
操作符原理
LiveData操作符會生成一個MediatorLiveData
MediatorLiveData會訂閱上游SourceLiveData,經過一系列的數據處理和轉換工作后,再將新數據發布給自己的訂閱者
distinctUntilChanged操作符
收到重復數據時,不轉發給下游,這里的重復是通過equals方法來判斷的
switchMap操作符
收到上游數據時,生成一個新的LiveData,并訂閱新的LiveData
并且,switchMap在訂閱新的LiveData之前,會解除對舊LiveData的訂閱
map操作符
收到上游數據時,轉換成新的數據格式,并發布給下游訂閱者