Slide 63
Slide 63 text
In RxJava
public class RxRoom {
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
public static Observable createObservable(final RoomDatabase database,
final boolean inTransaction, final String[] tableNames, final Callable callable) {
Scheduler scheduler = Schedulers.from(getExecutor(database, inTransaction));
final Maybe maybe = Maybe.fromCallable(callable);
return createObservable(database, tableNames)
.subscribeOn(scheduler)
.unsubscribeOn(scheduler)
.observeOn(scheduler)
.flatMapMaybe(new Function>() {
@Override
public MaybeSource apply(Object o) throws Exception {
return maybe;
}
});
}
private static Executor getExecutor(RoomDatabase database, boolean inTransaction) {
if (inTransaction) {
return database.getTransactionExecutor();
} else {
return database.getQueryExecutor();
}
}
}