我有這種方法,基本上等待在單身隊列中的項目變空,有一個後臺服務正在運行,服務停止後,它將刪除所有項目隊列和逐一處理。這段代碼在主線程中運行,當我在這裏等待時會發生什麼?警報對話框是否仍然顯示並阻止用戶執行任何其他操作?是否可以阻止UI線程,同時顯示警告對話框
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線程,而不是有一個回調您關閉與對話。您當前的實施可能會導致崩潰。 – JohanShogun
剛剛意識到調用wait()這裏是愚蠢的編輯問題,以便我對未來的訪問者不會顯得愚蠢> – Bhargav