【Kotlin/Android】RxJavaのDisposableの使い方!購読を停止する方法

この記事からわかること
- Android Studio/KotlinでRxJavaの使い方
- Disposableオブジェクトとは?
- 処理を停止させる方法
- 複数まとめて管理するCompositeDisposableとは?
- RxKotlinのaddToメソッドの使い方
index
[open]
\ アプリをリリースしました /
環境
- Android Studio:Flamingo
- Kotlin:1.8.20
Observableオブジェクトの処理を停止する方法
Observableオブジェクトの購読を開始するsubscribe
メソッドを実行すると返り値でDisposable
型が返ります。Disposable
オブジェクトを保持しておき、購読を停止させたいタイミングでdispose
メソッドを実行します。
明示的に購読を停止させない場合はライフライクルの中で自動的に破棄されるようにonDestroy
の中などに実装しておきます。
複数のDisposableをまとめて管理する:CompositeDisposable
複数のDisposableオブジェクトをまとめて管理したい場合はCompositeDisposable
クラスを使用します。CompositeDisposable
は内部的にコレクション形式でDisposableオブジェクトを複数保持することができるので、このクラスにまとめて管理したいDisposableオブジェクトをadd
メソッドを使用して追加していきます。
購読を破棄したい場合は同様にdispose
メソッドを使用することで破棄することが可能です。
RxKotlinのaddToメソッドを使用する
RxKotlinを導入している場合はCompositeDisposable
クラスへの追加をより簡潔に実装できるaddTo
メソッドが使用できるようになります。この方法ではメソッドチェーンでそのまま記述できるためコード量を減らし可読性も向上させることができます。
disposeとclearメソッドの違い
CompositeDisposable
では似たような役割のメソッドにdispose
とclear
があります。両者の違いと使い分けは以下のようになります。
disposeメソッド
dispose
はCompositeDisposable
が保持している全てのDisposable
オブジェクトのdispose
を呼び出し明示的に購読を停止させます。一度dispose
を呼び出したCompositeDisposable
オブジェクト自体も破棄されて使用できなくなるので再度使用したい場合は再度インスタンス化する必要があります。
clearメソッド
clear
はCompositeDisposable
が保持している全てのDisposable
オブジェクトを削除します。破棄されたDisposable
オブジェクトのdispose
メソッドは呼ばれず、CompositeDisposable
オブジェクト自体も再利用が可能です。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。