我在 ViewModel
内执行网络操作以 10 seconds
的间隔重复获取与 RxJava。但是,当我的 Fragment 在屏幕上不可见时,我不想从此 API 获取数据,例如,当我在其顶部打开一个 Activity 时,我将得到类似 if(!isResume) return
的代码。 。我的问题是,使用 MutableLiveData<Boolean>
可以吗?其中值将在 onResume
中更新和onPause
所以如果不恢复或者违反 MVVM
的概念,我可以忽略网络请求?我们可以这样做,但不确定这样做是否可以。
最佳答案
您可以让您的 ViewModel
实现接口(interface) DefaultLifecycleObserver
( https://developer.android.com/reference/androidx/lifecycle/DefaultLifecycleObserver ),然后重写方法 onResume
和 onPause
。更新内部 bool 变量,例如isResumed
,当调用这些方法时,您将能够检查其他方法是否相应的 fragment 处于恢复状态。
class YourViewModel : DefaultLifecycleObserver {
private var isResumed = false
override fun onResume(owner: LifecycleOwner) {
isResumed = true
}
override fun onPause(owner: LifecycleOwner) {
isResumed = false
}
}
您还需要更新 Fragment
代码以将 ViewModel
添加为生命周期观察者:
class YourFragment : Fragment() {
private val viewModel: YourViewModel // initialize it
override fun onViewCreated(...) {
lifecycle.addObserver(viewModel)
}
}
关于android - View 模型 : Check if fragment is resume or stop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67240724/