gpt4 book ai didi

android - RxJava 在相同的阻塞 UI 线程上运行并且不显示 AlertDialog

转载 作者:太空宇宙 更新时间:2023-11-03 12:27:14 25 4
gpt4 key购买 nike

我正在尝试使用 RxJava 在加载某些方法期间显示 AlertDialog。它不起作用,UI 被阻塞 2 秒,当使用调试器单步执行它时,调试器显示它在 UI 线程上运行。我已经添加了 Schedulers.IO,那么我做错了什么?

boolean initialize() {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
}
return true;
}

public AlertDialog showSomePopup(Context context, String msg) {
return new AlertDialog.Builder(context)
.setTitle("Loading...")
.setMessage(msg)
.setPositiveButton("Ok", null)
.show();
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

final AlertDialog dialog = showSomePopup(this, "Waiting ..");

Single.just(initialize())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<Boolean>() {
@Override
public void accept(@NonNull Boolean aBoolean) throws Exception {
dialog.dismiss();
}
});
}

最佳答案

问题是 .subscribe()initialize() 方法未发出之前不会被调用(即当您使用 .just(),直到 initialize() 不返回。

关于android - RxJava 在相同的阻塞 UI 线程上运行并且不显示 AlertDialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46640963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com