2013-09-11 4 views
0

Я пытаюсь показать ProgressDialog в течение пяти секунд на пользовательском интерфейсе, чтобы блокировать пользовательский интерфейс, чтобы мой locationClient мог подключиться и через пять секунд.Android DialogBox не отображается?

Я отклоняю диалоговое окно. Но диалоговое окно не отображается вообще, а экран мобильного телефона становится черным в течение 3-4 секунд. Это происходит, потому что я запускаю этот код. UiThread?. Если да, то это их другой подход, который я могу выполнить, чтобы остановиться в течение 5 секунд, а затем выполнить ожидающий код.

Мой код для резьбы следующее:

public void startConnecting(final boolean isSearchWarnings) { 
     mProgressDialog = ProgressDialog.show(this, "Please wait","Long operation starts...", true); 
     MainActivity.this.runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
       for (int i = 0; i <= 5; i++) { 
        try { 
         if (mLocationClient.isConnected()) { 
          break; 

         } else { 
          Thread.sleep(1000); 
         } 
        } catch (InterruptedException e) { 
         e.printStackTrace(); 
        } 

       } 
       mProgressDialog.dismiss(); 
       if (isSearchWarnings) { 
        new getWarnings().execute(false); 
       } else { 
        new getWarnings().execute(true); 
       } 
      } 
     }); 

    } 

ответ

4

У вас есть эта

MainActivity.this.runOnUiThread(new Runnable() 

А потом

Thread.sleep(1000); 

Вы звоните спать на Ui нить. Это блокирует поток ui, который вы не должны делать. Вы получите ANR.

http://developer.android.com/training/articles/perf-anr.html

Если вы хотите, чтобы вызвать задержку Использовать handler

give a delay of few seconds without using threads

+0

Я пытаюсь реализовать его с помощью handler.Will разместить код, если он работает – user818455

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