Is it possible to prevent LiveData receive the last value when start observing?
I am considering to use LiveData as events.
For example eve
Just ignore data before android.arch.lifecycle.LiveData#observe function called.
class IgnoreHistoryLiveData : MutableLiveData() {
private val unactivedObservers = LinkedBlockingQueue>()
override fun observe(owner: LifecycleOwner, observer: Observer) {
val wo = WrapperObserver(observer)
unactivedObservers.add(wo)
super.observe(owner, wo)
}
override fun setValue(value: T) {
while (unactivedObservers.isNotEmpty()) {
unactivedObservers.poll()?.actived = true
}
super.setValue(value)
}
}
private class WrapperObserver(private val origin: Observer) : Observer {
var actived = false
override fun onChanged(t: T?) {
if (actived) {
origin.onChanged(t)
}
}
}