如何解决片段恢复后,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)
}
}
当我导航到另一个片段或活动,然后按返回按钮时,将调用Fragment的onCreateView
和onViewCreated
方法,但是viewModel.state
的值相同。我的意思是,dataSource.getState()
不再被调用。我需要从数据源中重新获取状态。
使用liveData
构建器可以做到吗?如果没有,该怎么办?
解决方法
每次需要时,您只需要校准负载功能即可。一种可能的方式
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
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。