Диалог прогресса в Android не отображается? - PullRequest
1 голос
/ 20 мая 2010

Хорошо .. Я делаю что-то похожее на следующее:

private void onCreate() {
    final ProgressDialog dialog = ProgressDialog.show(this, "Please wait..", "Doing stuff..", true);
Thread t = new Thread() {
    public void run() {
        //do some serious stuff...
        dialog.dismiss();           
    }
};
t.start(); 
t.join();
stepTwo();

}

Однако я обнаружил, что мой диалог прогресса даже не появляется. Мое приложение на мгновение останавливается, поэтому я знаю, что оно загружается внутри потока t, но почему не появляется мое диалоговое окно?

ЕСЛИ я удаляю строку:

t.join();

Затем я обнаружил, что диалоговое окно прогресса отображается, но мое приложение запускает stepTwo (); прежде чем то, что происходит в потоке завершено ..

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 20 мая 2010

Ваша строка join () блокирует поток пользовательского интерфейса, который запускает ProgressDialog. Поэтому вы блокируете макеты, чертежи и т. Д.

2 голосов
/ 20 мая 2010

Попробуйте использовать обработчик

public class MyActivity {

private Handler handler;

private void onCreate() {

   handler = new Handler() {

      @Override
      public void handleMessage(Message msg) {
         pd.dismiss();
         stepTwo();
      }
   };

   final ProgressDialog dialog = ProgressDialog.show(this, "Please wait..", "Doing stuff..", true);
   Thread t = new MyThread() {
   t.start():

}

private class MyThread extends Thread() {
   public void run() {
      //do some serious stuff...
      handler.sendEmptyMessage(0);       
   }
}   

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...