今までActivity/Fragmentの処理をJetpackComposeに移植したい。
そんな時に困るのがライフサイクル
そのやり方
LifecycleEventObserverでコールバックされる
その後DisposableEffectでaddObserverして
onDisposeでremoveOverserverで消す処理をすれば良い。
https://zenn.dev/gottie/articles/5fb92abac732a6
既存の実装に引っ張られてrxjava使うときにたとえば使える
@Composable fun LifeCycle() { var mDisposable = Disposable.disposed() val observer = remember { LifecycleEventObserver { _, event -> when (event) { Lifecycle.Event.ON_CREATE -> {} Lifecycle.Event.ON_START -> {} Lifecycle.Event.ON_RESUME -> { if (!mDisposable.isDisposed) { return@LifecycleEventObserver } AAA().observable .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .doOnSubscribe { disposable -> mDisposable = disposable } .subscribe({ flag -> logic() }, { mDisposable.dispose() }, { mDisposable.dispose() }) } Lifecycle.Event.ON_PAUSE -> { mDisposable.dispose() } Lifecycle.Event.ON_STOP -> {} Lifecycle.Event.ON_DESTROY -> {} Lifecycle.Event.ON_ANY -> {} } } } val lifecycle = LocalLifecycleOwner.current.lifecycle DisposableEffect(Unit) { lifecycle.addObserver(observer) onDispose { lifecycle.removeObserver(observer) } } }