2012-03-30 44 views
0

我有一个OnClickListener里面,像这样的:如何检查是否一个线程完成一个OnClickListener

submit.setOnClickListener(new OnClickListener() { 
       if(connected) { 

         final ProgressDialog pd = ProgressDialog.show(this, "", "Please Wait..", true); 


         new Thread() { 
           public void run() { 

           //DOES SOME CALCULATION INSIDE HERE 

           pd.dismiss(); 

          } 
          }.start(); 

         showPriceDialog(price); 
       } 
       else 
        Toast.makeText(this, "No Network!", Toast.LENGTH_LONG).show();   
    }); 

我怎样才能知道线程完成?我知道有一个函数isAlive(),我可以使用,如果我构建我的线程是这样的:Thread t = new Thread(); t.isAlive();但是我怎么能知道我的线程是否还活着,我已经构建我的代码的方式?我知道这可以通过使用AsyncTask来解决。

+0

通常我会定义一个从Thread延伸出来的类,并且处理程序在这个线程和其他类之间传递数据。 – antonio081014 2012-03-30 16:40:08

+0

使用AsyncTask有什么问题? – 2012-03-30 17:43:32

回答

1

林不知道我遵循什么youre问为什么不:

Thread t = new Thread() { 
    public void run() { 
     ... 
    } 
} 
t.start(); 

另外,您可以在线程中使用活动的runOnUiThread():

new Thread() { 
    public void run() { 
     runOnUiThread(new Runnable() { 
      public void run() { 
       //set text here 
      } 
     }); 
    } 
} 

但说实话跟你们俩的这些不会比使用AsyncTask更好,我强烈建议去那条路线。

编辑此外,您将无法从单独的线程中解除进度对话框。

相关问题