package it.unisannio.ding.ids.wedroid.app import androidx.lifecycle.* class OneTimeObserver(private val handler: (T) -> Unit) : Observer, LifecycleOwner { private val lifecycle = LifecycleRegistry(this) init { lifecycle.handleLifecycleEvent(Lifecycle.Event.ON_RESUME) } override fun getLifecycle(): Lifecycle = lifecycle override fun onChanged(t: T) { handler(t) lifecycle.handleLifecycleEvent(Lifecycle.Event.ON_DESTROY) } } fun LiveData.observeOnce(onChangeHandler: (T) -> Unit) { val observer = OneTimeObserver(handler = onChangeHandler) observe(observer, observer) }