Android Livedata Observe Once Only (Kotlin)

Mar 11, 2018
val liveData = viewModel.getPassword(id)liveData.observe(this, object: Observer<Password> {    override fun onChanged(password: Password?) {        liveData.removeObserver(this)    }})

You can write a Kotlin Extensions to create a convinience method of observeOnce.

fun <T> LiveData<T>.observeOnce(lifecycleOwner: LifecycleOwner, observer: Observer<T>) {    observe(lifecycleOwner, object : Observer<T> {        override fun onChanged(t: T?) {            observer.onChanged(t)            removeObserver(this)        }    })    /*    observeForever(object : Observer<T> {        override fun onChanged(t: T?) {            observer.onChanged(t)            removeObserver(this)        }    })     */}
liveData.observeOnce(this, Observer<Password> {    if (it != null) {        // do something    }})

❤️ Is this article helpful?

Buy me a coffee ☕ or support my work via PayPal to keep this space 🖖 and ad-free.

Do send some 💖 to @d_luaz or share this article.

✨ By Desmond Lua

A dream boy who enjoys making apps, travelling and making youtube videos. Follow me on @d_luaz

👶 Apps I built

Travelopy - discover travel places in Malaysia, Singapore, Taiwan, Japan.