Multiple calls to set LiveData is not observed

后端 未结 5 1100
闹比i
闹比i 2021-01-11 18:28

I have recently seen a weird issue that is acting as a barrier to my project. Multiple calls to set the live data value does not invoke the observer in the view.

It

5条回答
  •  佛祖请我去吃肉
    2021-01-11 19:06

    You could use custom LiveData like this:

    class ActiveMutableLiveData : MutableLiveData() {
    
      private val values: Queue = LinkedList()
    
      private var isActive: Boolean = false
    
      override fun onActive() {
          isActive = true
          while (values.isNotEmpty()) {
              setValue(values.poll())
          }
      }
    
      override fun onInactive() {
          isActive = false
      }
    
      override fun setValue(value: T) {
          if (isActive) {
              super.setValue(value)
          } else {
              values.add(value)
          }
      }
    }
    

提交回复
热议问题