Комната поддерживает RxJava.Вы можете возвращать потоки RxJava и комбинировать свои потоки с богатыми операторами RxJava.Проверьте список доступных в RxJava Wiki .
Вот непроверенный пример, чтобы дать вам представление о том, о чем я говорю
@Dao
public interface TodoDao {
@Query("SELECT * FROM TodoList")
public Observable<List<ToDoEntity>> getAllTodos();
}
@Dao
public interface AnotherListDao {
@Query("SELECT * FROM AnotherList")
public Observable<List<ToDoEntity>> getAllOtherList();
}
MyDatabase db = ...//get database instance here
//most of the times d is member class that is disposed before object of that class goes out of scope
Disposable d = Observable.merge(db.getAllTodos(), db.getAllOtherList())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnSubscribe(subscription -> {
subscription.request(Long.MAX_VALUE);
//data is loading
})
.subscribe(data -> {
//onNext
//work with data here
},
error -> {
//onError
//an erro happened here, service it
},
() -> {
//onComplete
//task is done
}
);
//to avoid leaking the Observable dispose it in relevant lifecycle
if(d && d.isDisposable())
d.dispose())
Дайте мне знать, если есть что-тоэто не ясно.