我有一个简单的工作,就是使用GreenDao选择数据。此外,我想显示ProgressWheel,但此作业阻止UI线程。
showLoader();
DataManager.getInstance(this).getQuestions(0, 800)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.map(QuestionUtils::shuffleAnswers)
.subscribe(this::onFinishLoad);
和
public Observable<List<Question>> getQuestions(int offset, int limit) {
return Observable.fromCallable(() -> daoSession.getQuestionDao().queryBuilder()
.offset(offset)
.limit(limit)
.build().list());
}
答案 0 :(得分:3)
由于您的操作顺序,它会阻止。
DataManager.getInstance(this)
.getQuestions(0, 800)
.map(QuestionUtils::shuffleAnswers)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(this::onFinishLoad);
应该解决它。否则,您可以订阅数据并在之后映射它们。
如果你想完成你的数据的加载,你可以在你的订阅方法中使用动作并处理你发出的nextData中的加载。
.subscribe (nextData -> {}, error -> {}, () -> doCompletedStuff())