本文介绍了在没有生命周期所有者的情况下使用LiveData的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我找不到任何信息,如果在没有生命周期所有者的情况下使用LiveData是一个坏主意.如果是的话,还有什么替代方案?
I could not find any information, if it's a bad idea to use LiveData without a lifecycle owner. And if it is, what could be the alternative?
让我给你一个简单的例子
Let me give you just a simple example
class Item() {
private lateinit var property: MutableLiveData<Boolean>
init {
property.value = false
}
fun getProperty(): LiveData<Boolean> = property
fun toggleProperty() {
property.value = when (property.value) {
false -> true
else -> false
}
}
}
class ItemHolder {
private val item = Item()
private lateinit var observer: Observer<Boolean>
fun init() {
observer = Observer<Boolean> { item ->
updateView(item)
}
item.getProperty().observeForever(observer)
}
fun destroy() {
item.getProperty().removeObserver(observer)
}
fun clickOnButton() {
item.toggleProperty();
}
private fun updateView(item: Boolean?) {
// do something
}
}
推荐答案
您可以使用
observeForever(Observer) method
那样:
orderRepo.getServices().observeForever(new Observer<List<Order>>() {
@Override
public void onChanged(List<Order> orders) {
//
}
});
这篇关于在没有生命周期所有者的情况下使用LiveData的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!