У меня есть этот метод, который в основном ждет, когда элементы в очереди одиночной очереди станут пустыми, будет запущена служба фона, и служба остановится после удаления всех элементов в очереди и обрабатывать каждый по одному. Этот код запускается в основном потоке, что произойдет, когда я позвоню, подождите здесь? будет ли отображаться диалоговое окно предупреждения и блокирование пользователя от выполнения каких-либо других действий?Можно ли заблокировать поток пользовательского интерфейса при показе диалогового окна Alert
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();
}
Это плохая идея, никогда не блокировать поток пользовательского интерфейса, вместо того, чтобы иметь обратный вызов вы распускать диалог с. Ваша текущая реализация может генерировать anr аварий. – JohanShogun
только что понятый вызов wait() здесь глупо отредактировал вопрос, чтобы я не казался глупым для будущих посетителей>.> – Bhargav