gpt4 book ai didi

java - 在显示警报对话框时是否可以阻止 UI 线程

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

我有这个方法,它基本上等待单例队列中的项目变空,有一个正在运行的后台服务,一旦它删除队列中的所有项目并逐一处理,该服务就会停止。这段代码运行在主线程中,我在这里调用wait会发生什么?警报对话框是否仍会显示并阻止用户执行任何其他操作?

void waitForService() {
openConnectionToUploadQueue();
if(answersQueue.getCount(objInterviewQuestion.getQid()) <= 0){
answersQueue.close();
return;
}
if(!answersQueue.isInterviewUploadServiceRunning()) {
answersQueue.startInterviewUploadService();
}
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(getString(R.string.auto_submit_alert_title));
builder.setCancelable(false);
builder.setMessage(R.string.uploading_pending_answers);
AlertDialog waitForServiceDialog = builder.create();
waitForServiceDialog.show();
while (answersQueue.getCount(objInterviewQuestion.getQid()) > 0) {
// do nothing and keep loop running till answersQueue is empty
}
waitForServiceDialog.dismiss();
}

最佳答案

你永远不应该阻塞 UI 线程。当您按住 UI 线程的时间过长时,系统会显示一个对话框,提示 XXX 没有响应 并要求用户终止您的应用程序。

相反,您应该使用回调式调用,当服务启动时,您收到来自回调的方法调用,关闭对话框。

编辑:

如前所述,您需要实现 BroadcastReceiver

这是我的一个演示项目,你可以用它作为如何创建和使用 BroadcastReceiver 的示例。

https://github.com/cyfung/ActivityRecognitionSample

关于java - 在显示警报对话框时是否可以阻止 UI 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32493589/

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