import rx.Observable; import rx.Subscription; import rx.android.schedulers.AndroidSchedulers; import rx.schedulers.Schedulers; public class RxTransformer { /** * {@link rx.Observable.Transformer} that transforms the source observable to subscribe in the * io thread and observe on the Android's UI thread. */ private static Observable.Transformer ioToMainThreadSchedulerTransformer; static { ioToMainThreadSchedulerTransformer = createIOToMainThreadScheduler(); } /** * Get {@link rx.Observable.Transformer} that transforms the source observable to subscribe in * the io thread and observe on the Android's UI thread. * * Because it doesn't interact with the emitted items it's safe ignore the unchecked casts. * * @return {@link rx.Observable.Transformer} */ @SuppressWarnings("unchecked") private static Observable.Transformer createIOToMainThreadScheduler() { return tObservable -> tObservable.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); } @SuppressWarnings("unchecked") public static Observable.Transformer applyIOToMainThreadSchedulers() { return ioToMainThreadSchedulerTransformer; } }