Android LiveData是可观察和生命周期感知的数据。
假设生命周期所有者是一个活动,生命周期感知意味着它只在活动处于活动状态时向UI发送更新。Activity is active表示UI在后台(已启动状态)或在前台(恢复状态)可见。
基本LiveData用法
创建可变LiveData
class LiveDataViewModel: ViewModel() {
private val _liveData = MutableLiveData<Int>()
val liveData: LiveData<Int> = _liveData
/*...*/
}
viewModelScope.launch {
repeat(10000) { value ->
delay(1000)
_liveData.value = value
}
}
MutableLiveData.postValue()
viewModelScope.launch(Dispatchers.IO) {
repeat(10000) { value ->
delay(1000)
_liveData.postValue(value)
}
}
协同程序用于模拟异步流,因为我们不想阻塞UI/main线程。
setValue()必须在主线程上运行, postValue()可以在主线程或后台线程上
Observe LiveData - observe() / observeAsState()
观察LiveData,您可以使用手动观察LiveData.observe()或LiveData.observeAsState()应用程序编程接口
LiveData.observe()
创建MutableState数据
创建Observer对象
观察LiveData
移除Observer对象来自LiveData
@Composable
fun LiveDataScreen() {
val viewModel: LiveDataViewModel = viewModel()
val lifecycleOwner = LocalLifecycleOwner.current
//(1) Create a MutableState data
val manualObserveLiveDataState