LoginSignup
1
1

More than 5 years have passed since last update.

[Android] イベントを取り扱う為のLiveData

Last updated at Posted at 2018-10-12

イベントを取り扱う為の LiveData です。observe 開始時に過去のイベントが発火するのを防止します。

@MainThread
class LiveEvent<T> : LiveData<T>() {

    init {
        super.setValue(null)
    }

    @MainThread
    override fun observe(owner: LifecycleOwner, observer: Observer<T>) {
        val isFirst = AtomicBoolean(true)
        super.observe(owner, Observer {
            if (isFirst.getAndSet(false)) return@Observer
            observer.onChanged(it)
        })
    }

    @MainThread
    public override fun setValue(t: T?) {
        super.setValue(t)
    }
}

ただこの実装だと、監視を開始後の初めの onStart() 前に発生したイベントは拾えないので注意です。

参考にさせていただいた記事

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1