Skip to content

RxJava1からRxJava2にアップデートする

最近放置気味だった bergamio の更新を頑張っています. てっきり RxJava2 を使用していると思っていたのですが,1系のままだったみたいなので 2 に上げました. 変更された部分を抜き出してメモしておきます. 該当コミットは以下.

Update reactivex 2 · yuzumone/bergamio@1cdfd1d · GitHub

implementation 'io.reactivex.rxjava2:rxkotlin:2.2.0'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
implementation 'io.reactivex.rxjava2:rxjava:2.1.14'

rx から io.reacticex という感じに変更になったようですね.

1 系

import rx.Subscription
import rx.android.schedulers.AndroidSchedulers
import rx.schedulers.Schedulers
import rx.subscriptions.CompositeSubscription

2 系

import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import io.reactivex.disposables.Disposable
import io.reactivex.schedulers.Schedulers

Observable が Backpressure なしが Observable,ありが Flowable に分けられたみたいです. また,CompositeSubscription から CompositeDisposable へと変更されました.

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())
...

RxJavaCallAdapterFactory から RxJava2CallAdapterFactory に変更. 1 系

implementation 'com.squareup.retrofit2:adapter-rxjava:2.3.0'

2 系

implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
  • 移行はすごく大変
  • 機能が少なく,使用している範囲が限られていたので助かった.