LiveData是一个可观测的数据持有类,它具有生命周期感知能力,可以保证数据只在活跃的生命周期内更新,从而提高 app 的性能。与其他可观测库相比,LiveData有以下优势:
生命周期感知:LiveData可以感知组件(如 Activity、Fragment等)的生命周期,只有在组件处于活跃状态时才会触发数据更新。这样能够避免因为组件已经销毁而产生的崩溃或者内存泄漏。
UI一致性:LiveData可以保证更新的数据与UI线程一致,不需要在观察器里切换线程,使得UI更新更加稳定。
数据更新:LiveData能够自动更新UI,当数据发生变化时观察器会自动调用onChanged方法,不需要使用反复调用观察器的代码。
下面给出示例代码:
class MyViewModel : ViewModel() {
private val _data = MutableLiveData()
val data: LiveData
get() = _data
fun loadData() {
// some async operation to load data
_data.value = "new data"
}
}
class MyActivity : AppCompatActivity() {
private lateinit var viewModel: MyViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_my)
viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
viewModel.data.observe(this, Observer { newData ->
// do something with the data, such as update UI
Log.d(TAG, "data changed: $newData")
})
}
override fun onStart() {
super.onStart()
viewModel.loadData()
}
}
在上述代码中,我们创建了一个ViewModel,并在其中声明data变量,类型为MutableLiveData。在ViewModel中可以根据具体需求,通过异步操作更新数据。
在Activity中,我们获取ViewModel实例,并
上一篇:AndroidLiveData<List<>>vs.List<>memorysizecomparison?
下一篇:AndroidLiveDatacontainsvaluebutwhenassigningtovariableitisnull