欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JetPack之LiveData的使用

程序员文章站 2022-06-08 16:04:30
...

LiveData特点,在使用时可以感知生命周期,减少崩溃的发生
1)一次触发多出感应
2)防止内存泄漏,不会崩溃(因为内部使用lifeCycler监控生命周期)
3)只有触发,感应,使用简单明确
JetPack之LiveData的使用

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()
}

注:先改变,后监听,也能监听数据的变化