mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-27 22:43:52 +00:00
Move LifecycleDisposable to core-util.
This commit is contained in:
committed by
Greyson Parrelli
parent
b51973f1d5
commit
3451ac4504
@@ -0,0 +1,46 @@
|
||||
package org.signal.core.util.concurrent
|
||||
|
||||
import androidx.lifecycle.DefaultLifecycleObserver
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.LifecycleOwner
|
||||
import io.reactivex.rxjava3.disposables.CompositeDisposable
|
||||
import io.reactivex.rxjava3.disposables.Disposable
|
||||
|
||||
/**
|
||||
* A lifecycle-aware [Disposable] that, after being bound to a lifecycle, will automatically dispose all contained disposables at the proper time.
|
||||
*/
|
||||
class LifecycleDisposable : DefaultLifecycleObserver {
|
||||
val disposables: CompositeDisposable = CompositeDisposable()
|
||||
|
||||
fun bindTo(lifecycleOwner: LifecycleOwner): LifecycleDisposable {
|
||||
return bindTo(lifecycleOwner.lifecycle)
|
||||
}
|
||||
|
||||
fun bindTo(lifecycle: Lifecycle): LifecycleDisposable {
|
||||
lifecycle.addObserver(this)
|
||||
return this
|
||||
}
|
||||
|
||||
fun add(disposable: Disposable): LifecycleDisposable {
|
||||
disposables.add(disposable)
|
||||
return this
|
||||
}
|
||||
|
||||
fun addAll(vararg disposable: Disposable): LifecycleDisposable {
|
||||
disposables.addAll(*disposable)
|
||||
return this
|
||||
}
|
||||
|
||||
fun clear() {
|
||||
disposables.clear()
|
||||
}
|
||||
|
||||
override fun onDestroy(owner: LifecycleOwner) {
|
||||
owner.lifecycle.removeObserver(this)
|
||||
disposables.clear()
|
||||
}
|
||||
|
||||
operator fun plusAssign(disposable: Disposable) {
|
||||
add(disposable)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user