Skip to content

Instantly share code, notes, and snippets.

@guelo
Last active February 11, 2020 09:42
Show Gist options
  • Star 7 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save guelo/ae3e05fda62c050b670ce3ca8c50bb7b to your computer and use it in GitHub Desktop.
Save guelo/ae3e05fda62c050b670ce3ca8c50bb7b to your computer and use it in GitHub Desktop.
Dagger injected Rx schedulers
import javax.inject.Named;
import javax.inject.Singleton;
import io.reactivex.Observable;
import io.reactivex.ObservableTransformer;
import io.reactivex.Scheduler;
@Singleton
public class RxSchedulers {
private final Scheduler androidScheduler;
private final Scheduler ioScheduler;
@Inject
public RxSchedulers(@Named("io") Scheduler ioScheduler,
@Named("android") Scheduler androidScheduler) {
this.ioScheduler = ioScheduler;
this.androidScheduler = androidScheduler;
}
public <T> ObservableTransformer<T, T> applySchedulers() {
return new ObservableTransformer<T, T>() {
@Override
public Observable<T> apply(Observable<T> observable) {
return observable.subscribeOn(ioScheduler)
.observeOn(androidScheduler);
}
};
}
}
public class SomethingManager {
private RxSchedulers rxSchedulers;
private Api api;
@Inject
public SomethingManager(RxSchedulers rxSchedulers, Api api) {
this.rxSchedulers = rxSchedulers;
this.api = api;
}
public Observable<Thing> thingFetcher() {
return api.fetchThing()
.compose(rxSchedulers.<Thing>applySchedulers())
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment