本文介绍了在没有生命周期所有者的情况下使用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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-22 11:06
查看更多