【Android Studio】RxKotlinの使い方と導入方法!機能拡張メソッドの種類
この記事からわかること
- Android Studio/KotlinでRxKotlinの使い方
- 機能拡張されたメソッドの種類
- toObservableやtoFlowable、subscribeByなどの使い方
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
環境
- Android Studio:Flamingo
- Kotlin:1.8.20
RxKotlinとは?
そもそもRxKotlinとはMicrosoftが2011年にリリースしたReactiveX(Reactive Extensions)と呼ばれるライブラリのJava版であるRxJavaをKotlinで操作するための拡張関数がまとまったライブラリです。ReactiveXはもともと.NET Framework用に開発されたライブラリで、その後KotlinだけでなくC++やSwift、JavaScriptなど数多くのプラットフォームにも提供されるようになりました。
そのため拡張された関数が含まれているRxKotlinはRxJavaと一緒に導入して使用する前提となっています。RxJava自体もKotlinでそのまま活用することができます。RxJavaの使い方を理解しておくとスムーズなので先に以下の記事を参考にしてください。
RxKotlinの導入方法
RxKotlinをAndroid Studioで利用できるようにするにはRxJavaも含めて導入する必要があります。2024年現在、RxKotlinは3.x系までリリースされており、導入する際には同バージョンのRxJavaを指定する必要があります。以下を「bundle.gradle(Module)」に追加して「Sync Now」をクリックします。
dependencies {
// RxJava/RxKotlin/RxAndroid
implementation 'io.reactivex.rxjava3:rxjava:3.0.0'
implementation 'io.reactivex.rxjava3:rxkotlin:3.0.0'
implementation 'io.reactivex.rxjava3:rxandroid:3.0.0'
}
この際にRxAndroid
も一緒に導入しておきます。これはRxJavaを使用する上でUIスレッドへのスケジューリングやAndroidコンポーネントとの統合を行うためのユーティリティが含まれているようです。
拡張機能の種類
RxKotlinではRxJavaを使いやすくするようなさまざまな拡張機能が提供されています。
toObservableメソッド
toObservable
は任意のデータ型(リストや配列など)をObservableオブジェクトに変換するためのメソッドです。RxJavaのfromIterable
メソッドと似たような役割になります。
val list = listOf(1,2,3,4,5,6)
val observable = list.toObservable()
observable.subscribe {
Log.i("RxKotlin", it.toString())
}
toFlowableメソッド
toFlowable
は任意のデータ型(リストや配列など)をFlowableオブジェクトに変換するためのメソッドです。
val list = listOf(1,2,3,4,5,6)
val flowable = list.toFlowable()
flowable.subscribe {
Log.i("RxKotlin", it.toString())
}
Observableオブジェクトを変換することも可能です。
val list = listOf(1,2,3,4,5,6)
val flowable = list.toObservable().toFlowable(BackpressureStrategy.BUFFER)
flowable.subscribe {
Log.i("RxKotlin", it.toString())
}
subscribeByメソッド
subscribeBy
は名前付き引数を使用してobserverを構築するメソッドです。RxJavaのsubscribe
メソッドと役割は同じですが記法が異なります。
observable.subscribeBy(
onNext = { data: String->
onNextFunction(data)
},
onError = { throwable: Throwable ->
onErrorFunction(throwable)
},
onComplete = {
onCompleteFunction()
}
)
addToメソッド
addTo
は複数のDisposable
をまとめて管理できるCompositeDisposable
クラスへの追加をより簡潔に実装できるメソッドです。
Observable.create<String> { emitter ->
emitter.onNext("Hello")
}.subscribeBy(
onNext = { length -> Log.e("RxJava", length.toString()) }
).addTo(compositeDisposable)
たくさんある機能拡張メソッド
- flatMapSequenceメソッド
- toMapメソッド
- toMultimapメソッド
- mergeAllメソッド
- concatAllメソッド
- switchLatestメソッド
- castメソッド
- ofTypeメソッド
- mergeメソッド
- mergeDelayErrorメソッド
- flatMapSequenceメソッド
- toCompletableメソッド
- blockingSubscribeByメソッド
- plusAssignメソッド
- etc...
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。