做详情页的网站,电影网站制作模版,网站icp备案流程,深圳如何搭建制作网站LiveData
一、什么是LiveData
1、一句话解释#xff1a;
LiveData 是会自动更新 UI 的数据容器#xff0c;省去手动管理数据与界面同步的麻烦。
2、核心功能#xff1a;
数据与界面自动绑定#xff1a;数据变化时自动通知观察者#xff08;界面#xff09;更新UI
LiveData 是会自动更新 UI 的数据容器省去手动管理数据与界面同步的麻烦。
2、核心功能
数据与界面自动绑定数据变化时自动通知观察者界面更新UI无需手动调用更新方法。生命周期感知自动随界面的生命周期启停避免内存泄漏或无效更新。界面销毁后不再通知。
对比handler需要手动管理否则会内存泄漏。
3、一句话讲原理
使用观察者模式并配合LifeCycle在数据变化时自动通知处于活跃状态如 STARTED/RESUMED的 UI 组件更新并在 UI 销毁时自动解除观察避免内存泄漏。
二、基本用法
1、常在ViewModel中搭配使用
class MyViewModel : ViewModel() {// 使用 MutableLiveData 存储可修改的数据private val _counter MutableLiveDataInt(0)// 对外暴露不可变的 LiveData防止外部修改val counter: LiveDataInt _counterfun increment() {_counter.value _counter.value?.plus(1) // 更新数据}
}2、在 Activity/Fragment 中观察数据
val viewModel ViewModelProvider(this).get(MyViewModel::class.java)
// 观察 LiveData 数据变化
viewModel.counter.observe(this) { count -
// 当 counter 数据变化时自动更新 UI仅在界面活跃时触发binding.textView.text Count: $count
}
binding.button.setOnClickListener {viewModel.increment() // 触发数据更新
}三、核心方法
1、postvalue一般在子线程中使用
2、setvalue必须在主线程中使用