Skip to content

Instantly share code, notes, and snippets.

@st235
Created August 28, 2017 11:03
Show Gist options
  • Save st235/d0bc3cd8441b056126d72af5d012a05f to your computer and use it in GitHub Desktop.
Save st235/d0bc3cd8441b056126d72af5d012a05f to your computer and use it in GitHub Desktop.
Schedulers
import io.reactivex.CompletableTransformer;
import io.reactivex.FlowableTransformer;
import io.reactivex.ObservableTransformer;
import io.reactivex.Scheduler;
import io.reactivex.SingleTransformer;
/**
* Created by alexander on 07/07/2017.
*/
public abstract class RxSchedulers {
abstract public Scheduler getMainThreadScheduler();
abstract public Scheduler getIoScheduler();
abstract public Scheduler getComputationScheduler();
public <T> ObservableTransformer<T, T> getIoToMainTransformer() {
return objectObservable -> objectObservable
.subscribeOn(getIoScheduler())
.observeOn(getMainThreadScheduler());
}
public <T> SingleTransformer<T, T> getIoToMainTransformerSingle() {
return objectObservable -> objectObservable
.subscribeOn(getIoScheduler())
.observeOn(getMainThreadScheduler());
}
public <T> FlowableTransformer<T, T> getIoToMainTransformerFlowable() {
return objectObservable -> objectObservable
.subscribeOn(getIoScheduler())
.observeOn(getMainThreadScheduler());
}
public <T> ObservableTransformer<T, T> getComputationToMainTransformer() {
return objectObservable -> objectObservable
.subscribeOn(getComputationScheduler())
.observeOn(getMainThreadScheduler());
}
public <T> SingleTransformer<T, T> getComputationToMainTransformerSingle() {
return objectObservable -> objectObservable
.subscribeOn(getComputationScheduler())
.observeOn(getMainThreadScheduler());
}
}
import io.reactivex.Scheduler;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
/**
* Created by alexander on 07/07/2017.
*/
public final class RxSchedulersImpl extends RxSchedulers {
@Override
public Scheduler getMainThreadScheduler() {
return AndroidSchedulers.mainThread();
}
@Override
public Scheduler getIoScheduler() {
return Schedulers.io();
}
@Override
public Scheduler getComputationScheduler() {
return Schedulers.computation();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment