JetPack之LiveData的使用
程序员文章站
2022-06-08 16:04:30
...
LiveData特点,在使用时可以感知生命周期,减少崩溃的发生
1)一次触发多出感应
2)防止内存泄漏,不会崩溃(因为内部使用lifeCycler监控生命周期)
3)只有触发,感应,使用简单明确
LiveData有两个订阅方法
1,observe()当数据发生改变时及时通道的视图
2,observeForever() 当数据发生变化时,无论页面处于什么状态,observeForever都能收到通知,在使用时需要调用removeObserver方法停止对LiveData的观察,否则LiveData会一直处于**状态,导致内存泄漏。
使用场景,可用于Activity和Fragment之间的通信
使用案例如下:
class StudentManager {
private constructor(){
liveData = MutableLiveData()
}
companion object{
val instance:StudentManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) {
StudentManager()
}
}
private var liveData:MutableLiveData<String>
fun getLiveData():MutableLiveData<String>{
return liveData
}
}
//添加监听
StudentManager.instance.getLiveData()
.observe(this ,
{ t -> tvValue.text = t })
//触发值得改变
btnChange.setOnClickListener {
StudentManager.instance.getLiveData().value = 100.toString()
}
注:先改变,后监听,也能监听数据的变化
上一篇: php用递归方法实现无限级分类