【Kotlin/Android】RxJavaのdoAfterTerminateやdoOnErrorなどの使い方!

この記事からわかること
- Android Studio/KotlinでRxJavaの使い方
doAfterTerminate
メソッドの使い方- doOnNext/doOnComplete/doOnError/doOnDispose/doOnEachdoOnLifecycleの違いと実装方法
index
[open]
\ アプリをリリースしました /
環境
- Android Studio:Flamingo
- Kotlin:1.8.20
Do系のメソッド
RxJavaでは特定のイベントが発生したときにコールバックを実行するDo系のメソッドが数多く用意されています。購読した際や完了したとき、エラーが発生したときなどObservableのさまざまなライフサイクルの中で任意の処理を実行することができるようになります。
Do系の種類
Do系のメソッドは以下の種類が用意されているようです。
- doOnNext:新しい値が次に通知されるときに実行
- doAfterTerminate:Observableが正常に完了(エラーでも)したときに実行
- doOnSubscribe:購読(Subscription)が開始されたときに実行
- doOnComplete:Observableが完了したときに実行
- doOnError:エラーが発生したときに実行
- doOnDispose:購読が解除されたときに実行
- doOnEach:すべての通知(次、エラー、完了)の後に実行
- doOnLifecycle:購読が開始されたときと終了したときに実行
実際に使用する場合は以下のようになります。
val observable = Observable.just(1, 2, 3)
observable
.doOnNext { item -> println("Next: $item") } // 新しい値が通知されるときに実行
.doAfterTerminate { println("After terminate") } // 正常に完了した後に実行
.doOnSubscribe { disposable -> println("Subscribed") } // 購読が開始されたときに実行
.doOnComplete { println("Completed") } // 完了したときに実行
.doOnError { error -> println("Error: ${error.message}") } // エラーが発生したときに実行
.doOnDispose { println("Disposed") } // 購読が解除されたときに実行
.doOnEach { notification -> println("Each: $notification") } // 各通知の後に実行
.doOnLifecycle(
{ disposable -> println("Lifecycle: Subscribed") }, // 購読が開始されたときに実行
{ println("Lifecycle: Unsubscribed") } // 購読が終了したときに実行
)
.subscribe()
ログ出力はこんな感じ。
Subscribed
Lifecycle: Subscribed
Next: 1
Each: OnNextNotification[1]
Next: 2
Each: OnNextNotification[2]
Next: 3
Each: OnNextNotification[3]
Completed
Each: OnCompleteNotification
After terminate
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。