Android开发规范技巧

【Android Jetpack】- LiveData(源码分析

2019-10-20  本文已影响0人  拔萝卜占坑

简介

LiveData是可观察的数据持有者类

用法

class LiveDataMode{
    val currentName: MutableLiveData<String> by lazy { MutableLiveData<String>() }
}
private fun useLiveData(){
     val mode = LiveDataMode()
     val nameObserver = Observer<String> { newName ->
         Log.e(TAG,"new name $newName")
     }
     // 添加数据观察
     mode.currentName.observe(this, nameObserver)
     // 改变值
     mode.currentName.postValue("丘比特")
}

可用于计算的ComputableLiveData

通过查看源码,改类实现了对LiveData的扩展,可以在多个子线程完成对某一任务的计算,当所以都计算完成后,通知主线程更新UI。而计算过程由用户实现。

Transformations

val cn: LiveData<String> = Transformations.switchMap(mode.currentBirth){

        address -> getPostCode(address)
}

对输入数据进行转换成想要的输出数据,输入数据类型可以和输出不同

MediatorLiveData

对LiveData对象添加数据观察,具体用法请自行查看源码。

总结

LiveData就是可观察的数据持有者类,借助Lifecycles知识进行生命周期感知,但是它没有使用Lifecycles库相关的类,所以是独立的。

上一篇 下一篇

猜你喜欢

热点阅读