Kri*_*lsh 1 android progressdialog rx-java
我有以下代码,在我执行长时间运行的任务之前,我启动了一个环形对话框,在 RxJava2 中完成。问题是对话框没有显示,我认为我没有阻塞主 UI 线程。
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (ringProgressDialog != null) {
if (ringProgressDialog.isShowing()) {
ringProgressDialog.dismiss();
}
}
ringProgressDialog = ProgressDialog.show(SendConversationsActivity.this,
getResources().getString(R.string.creating_document_progress_dialog_title),
getResources().getString(R.string.conversation_progress_dialog_text),
true, false);
FileNameAndContacts filenameAndContacts = new FileNameAndContacts();
if (tvNoDatSelected.getVisibility() != View.VISIBLE) {
filenameAndContacts.setFileName("");
}
createDocument(filenameAndContacts)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnError(throwable -> Timber.e(throwable, "Error in getting document"))
.subscribe(fileAndContacts -> {
if (ringProgressDialog.isShowing()) { //debugger says
//dialog is showing.
ringProgressDialog.dismiss();
}
sendDocumentInEmail(fileAndContacts);
});
}
Run Code Online (Sandbox Code Playgroud)
任务正常执行。在我在同一个活动中执行另一个 RXJava 任务之前,我还显示了另一个环进度对话框,这个对话框出现了。
如果我注释掉 RxJava 调用,就会出现对话框。所以 RxJava 调用中的某些东西是阻塞的。
//EDIT 这个简单的 observable 也阻止了进度对话框的显示(但 Toast 显示):
Observable.just("Hello, world")
.observeOn(AndroidSchedulers.mainThread())
.doOnSubscribe(disposable -> {
Toast.makeText(SendConversationsActivity.this, "Toast...", Toast.LENGTH_SHORT).show();
//ringProgressDialog.show();
})
.doOnTerminate(() -> {
//ringProgressDialog.dismiss();
})
.subscribe(s -> {
//Toast.makeText(SendConversationsActivity.this, s, Toast.LENGTH_SHORT).show();
ringProgressDialog.dismiss();
});
Run Code Online (Sandbox Code Playgroud)
createDocument 是如何实现的?创建,来自Callable
@akarnokd 我做计算然后做一个 Single.just(fileNameAndContacts)
正如所怀疑的那样,您在当前线程(主线程)上计算文档并阻塞它。您应该将其移入,fromCallable并在与subscribeOn(Schedulers.io())以下组合时在后台进行计算:
Observable.fromCallable(() -> {
/* compute the document here */
return fileNameAndContacts;
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2715 次 |
| 最近记录: |