マスタカはRxJavaを使ってる
できればcoroutine使いたいけど・・・JavaのコードがAndroidにまだあるんだよなぁ・・
今回RxJava2がdeprecatedになったのでRxJava3に移行した
・マイグレーションガイド
https://github.com/ReactiveX/RxJava/wiki/What’s-different-in-3.0
・gradle
rxjava以外にrxandroidとadapter-rxjava2も変える。
パッケージが別なので並行可動はできる
//old //implementation "io.reactivex.rxjava2:rxjava:hogehoge" //implementation "io.reactivex.rxjava2:rxandroid:hogehoge" //implementation "com.squareup.retrofit2:adapter-rxjava2:hogehoge" //new implementation "io.reactivex.rxjava3:rxjava:3.0.5" implementation "io.reactivex.rxjava3:rxandroid:3.0.0" implementation "com.squareup.retrofit2:adapter-rxjava3:2.9.0"
・パッケージ構成の偏向
基本的にはだいたいこれで動きそう
https://github.com/ReactiveX/RxJava/wiki/What’s-different-in-3.0#package-structure
//old //import io.reactivex.android.schedulers.AndroidSchedulers //import io.reactivex.rxjava3.observers.DisposableSingleObserver //import io.reactivex.schedulers.Schedulers //import io.reactivex.Single //new import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.observers.DisposableSingleObserver import io.reactivex.rxjava3.schedulers.Schedulers import io.reactivex.rxjava3.core.Single
・Disposablesが変わった
https://github.com/ReactiveX/RxJava/wiki/What’s-different-in-3.0#moved-components
//import io.reactivex.disposables.Disposables import io.reactivex.rxjava3.disposables.Disposable //コード //private var aaa = Disposables.disposed() private var aaa = Disposable.disposed()
・アダプタの修正
RetrofitのAdapterをRxJava3に変更する
//import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; import retrofit2.adapter.rxjava3.RxJava3CallAdapterFactory; //コード //addCallAdapterFactory(RxJava2CallAdapterFactory.create()) addCallAdapterFactory(RxJava3CallAdapterFactory.create())
・メソッドが一部存在しない
rxjava2
subscribe(Consumer<? super T> onNext, Consumer<? super Throwable> onError, Action onComplete, Consumer<? super Disposable> onSubscribe)
http://reactivex.io/RxJava/javadoc/
rxjava3
blockingSubscribe(@NonNull Consumer<? super T> onNext, @NonNull Consumer<? super Throwable> onError, @NonNull Action onComplete)
http://reactivex.io/RxJava/3.x/javadoc/
RxJava3で同じことするときには、doOnSubscribeに処理を書けばおk
これでRxJava3に移行できましたとさ
関連記事:
- JetpackComposeでライフサイクルに応じた処理を実施する
- AndroidアプリにHiltを導入してハマったところ
- AndroidでRecyclerViewのConcatAdapterを使ってみた