2012-03-29 3 views
1

У меня есть функция, которая создает соединение сокета, а затем ждет ответа. За это время я не хочу, чтобы пользователь мог нажимать на какие-либо кнопки, иначе они могут вызвать сбой приложения.Дисплей обработки Android

как таковой в начале функции я делаю следующее:

public void Checkout() 
    { 
     AlertDialog.Builder builder2 = new  AlertDialog.Builder(NuPos_testActivity.this); 
     builder2.setMessage("Processing"); 
     AlertDialog alert2 = builder2.create(); 
     alert2.show(); 

Это затемняется экран и отображает обработки до ответа возвращается с сервера. Моя проблема в том, что это первое, что стоит в верхней части функции, она работает только после всего остального. Я не понимаю, почему?

Чтобы более подробно рассказать о моей проблеме: я запускаю окно предупреждения перед кодом, но оно отображается только после завершения кода. Как это исправить?

+0

Если на ваш вопрос был дан ответ или если он больше недействителен, отметьте «галочкой», чтобы выбрать наиболее подходящий ответ, чтобы все знали, что проблема решена. Благодарю. – wattostudios

ответ

0

Показаны ссылки AlertDialog не останавливает код. Это просто препятствует взаимодействию с пользователем. Если вы хотите отложить дальнейшее выполнение кода до тех пор, пока не будете готовы, посмотрите на что-то вроде ASyncTask, у которого есть метод onPostExecute(), чтобы уведомить вас, когда задача будет выполнена.

+0

Я хочу, чтобы код выполнялся. Я просто не хочу, чтобы пользователь мог щелкнуть файл, пока Socket ожидает ответа. Но, как я уже сказал, он запускает соединение сокета и получает ответ, прежде чем вычеркнуть экран и показать обработку. – David

0

Это звучит как ваш пример кода выше, а код для вашего Socket, работает в том же Thread (что является UIThread). Если это так, то Android, как правило, сначала выполняет код обработки, а затем задерживает картину до тех пор, пока картина не будет иметь более низкий приоритет.

Вам необходимо переместить код Socket в отдельный Thread, так что он может работать независимо от UIThread, что должно позволить Android время для отображения AlertDialog ранее.

Смежные вопросы