2012-03-30 93 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更好,我強烈建議去那條路線。

編輯此外,您將無法從單獨的線程中解除進度對話框。

相關問題