在使用 JetPack Compose 和 LiveData 时,应确保在 observe 时使用合适的组件生命周期。例如,在 ViewModel 中使用 LiveData 需要使用 observeAsState(),并将其作为 Composable 函数的参数传递。如果 LiveData 观察到的数据没有更新并且 Composable 不再处于屏幕范围内,则可能需要使用 DisposableEffect 以手动删除观察器。以下是示例代码:
@Composable
fun MyComposable(myViewModel: MyViewModel) {
val myLiveData: LiveData = myViewModel.myLiveData
val myLiveDataState: String by myLiveData.observeAsState("")
DisposableEffect(Unit) {
onDispose {
myLiveData.removeObservers()
}
}
Text(text = myLiveDataState)
}