恢复片段时,LiveData不会重新发射



在我的片段中,我有以下代码:

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)
}
}

当我导航到另一个片段或活动并按下后退按钮时,会调用片段的onCreateViewonViewCreated方法,但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
}
}

相关内容

  • 没有找到相关文章

最新更新