在我的片段中,我有以下代码:
fun onViewCreated(view: View, savedInstanceState: Bundle?) {
//...
viewModel.state.observe(viewLifecycleOwner) {
//do something
}
}
在我的ViewModel中:
class MyViewModel: ViewModel() {
val state = liveData {
val state = dataSource.getState()
emit(state)
}
}
当我导航到另一个片段或活动并按下后退按钮时,会调用片段的onCreateView
和onViewCreated
方法,但viewModel.state
具有相同的值。我的意思是,dataSource.getState()
不再被调用。我需要从数据源重新获取状态。
这可能使用liveData
构建器吗?如果没有,我该怎么做?
每次需要时只需要cal加载函数。的一种可能方法
ViewModel:
val stateLiveData = MutableLiveData<>()
fun loadData() {
viewModelScope.launch {
val state = dataSource.getState()
stateLiveData.setValue(state)
}
}
片段:
fun onViewCreated(view: View, savedInstanceState: Bundle?) {
//...
viewModel.loadData()
viewModel.stateLiveData.observe(viewLifecycleOwner) {
//do something
}
}