Android中的进度对话框没有显示?

时间:2010-05-19 23:02:47

标签: java android multithreading

好的..我正在做类似下面的事情:

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 个答案:

答案 0 :(得分:2)

尝试使用处理程序

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);       
   }
}   

}

答案 1 :(得分:2)

您的join()行会阻止运行ProgressDialog的UI线程。因此,您正在阻止布局,图纸等。