如果在没有生命周期所有者的情况下使用 LiveData 是个坏主意,我找不到任何信息。如果是,还有什么替代方案?
举个简单的例子
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
}
}
最佳答案
您可以使用
在没有关联 LifecycleOwner 对象的情况下注册观察者observeForever(Observer) method
像那样:
orderRepo.getServices().observeForever(new Observer<List<Order>>() {
@Override
public void onChanged(List<Order> orders) {
//
}
});
关于android - 在没有生命周期所有者的情况下使用 LiveData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50103416/