MutableLiveData 舊資料問題

烟花易冷心易碎發表於2024-06-11

`
/**

  • 解決粘性問題,解決後新增的observe會收到老資料問題
    */
    class UnPeekLiveData : MutableLiveData() {

    private var pending = false

    override fun setValue(value: T?) {
    pending = true
    super.setValue(value)
    }

    override fun observe(owner: LifecycleOwner, observer: Observer) {
    super.observe(owner, Observer { t ->
    if (pending) {
    pending = false
    observer.onChanged(t)
    }
    })
    }

    /**

    • 為了保持與LiveData.observe的一致性,提供一個觀察方法不需要粘性事件。
      */
      fun observeSticky(owner: LifecycleOwner, observer: Observer) {
      super.observe(owner, observer)
      }
      }`

相關文章