RxJava1からRxJava2にアップデートする
最近放置気味だった bergamio の更新を頑張っています. てっきり RxJava2 を使用していると思っていたのですが,1系のままだったみたいなので 2 に上げました. 変更された部分を抜き出してメモしておきます. 該当コミットは以下.
Update reactivex 2 · yuzumone/bergamio@1cdfd1d · GitHub
build.gradle
Section titled “build.gradle”implementation 'io.reactivex.rxjava2:rxkotlin:2.2.0'implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'implementation 'io.reactivex.rxjava2:rxjava:2.1.14'import 元が変更
Section titled “import 元が変更”rx から io.reacticex という感じに変更になったようですね.
1 系
import rx.Subscriptionimport rx.android.schedulers.AndroidSchedulersimport rx.schedulers.Schedulersimport rx.subscriptions.CompositeSubscription2 系
import io.reactivex.android.schedulers.AndroidSchedulersimport io.reactivex.disposables.CompositeDisposableimport io.reactivex.disposables.Disposableimport io.reactivex.schedulers.SchedulersSubscription から Disposable へ
Section titled “Subscription から Disposable へ”Observable が Backpressure なしが Observable,ありが Flowable に分けられたみたいです. また,CompositeSubscription から CompositeDisposable へと変更されました.
Observable.zip
Section titled “Observable.zip”zip が Stream をまとめる際,BiFunction というのを使ってまとめるようになってました.
1 系
Observable.zip(client.getCoupon(developer, token), client.getLog(developer, token), {coupon, log -> createResponseData(coupon, log)}) .subscribeOn(Schedulers.newThread()) ...2 系
return Observable.zip(client.getCoupon(developer, token), client.getLog(developer, token), BiFunction { coupon: CouponResult, log: LogResult -> createResponseData(coupon, log) }) .subscribeOn(Schedulers.newThread()) ...retrofit2
Section titled “retrofit2”RxJavaCallAdapterFactory から RxJava2CallAdapterFactory に変更. 1 系
implementation 'com.squareup.retrofit2:adapter-rxjava:2.3.0'2 系
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'- 移行はすごく大変
- 機能が少なく,使用している範囲が限られていたので助かった.