【发布时间】:2019-09-18 11:34:18
【问题描述】:
我在Android LiveData documentation 上看到:
您可以使用 observeForever(Observer) 方法注册没有关联 LifecycleOwner 对象的观察者。在这种情况下,观察者被认为始终处于活动状态,因此始终会收到有关修改的通知。您可以调用 removeObserver(Observer) 方法删除这些观察者。
我正在使用 ViewModel 并在我的 ViewModel 类中声明 LiveDatas 并使用 MVVM 架构模式构建应用程序。在我的 viewModel 中,我将 observeForever 设置为 LiveData:
val password by lazy {
MutableLiveData<String>()
}
init {
initObservable()
}
private fun initObservable() {
password.observeForever {
...
}
}
根据我从文档中了解到的情况,每次实例化 ViewModel(使用前面的代码)的视图被破坏时,我都应该删除观察者,对吗?但是一旦视图被销毁,Observers不应该被销毁吗(因为ViewModel实例在视图中被实例化并且也会被销毁)?
【问题讨论】:
-
你是如何获得这个
ViewModel实例的?为什么从ViewModel本身内部观察到password?
标签: android android-livedata android-viewmodel android-mvvm