2011-04-19 53 views
2
DalvikVM[localhost:8604]  
Thread [<1> main] (Running) 
Thread [<7> Binder Thread #2] (Running) 
Thread [<6> Binder Thread #1] (Running) 
Thread [<8> AsyncTask #1] (Running) 
Thread [<9> Binder Thread #3] (Running) 
Thread [<10> Binder Thread #4] (Running)  
Thread [<11> AsyncTask #2] (Running)  
Thread [<12> AsyncTask #3] (Running)  

在運行我的應用程序時,我在調試窗口中看到了這個。 我想知道這是正確的嗎?應該運行這麼多任務。 例如Thread [<8> AsyncTask #1] (Running)此任務從Web服務器下載文件。當任務完成時,是否應該從上面的列表中消失?Android線程問題

我不能正確地結束任務嗎?

Tabletask = new CreateTablesTask(); 
Tabletask.execute(); 


class CreateTablesTask extends AsyncTask<Object, Integer, Boolean> {   

    ProgressDialog pleaseWaitDialog; 

    @Override 
    protected void onCancelled() { 
     pleaseWaitDialog.dismiss(); 
    } 

    @Override 
    protected void onPreExecute() { 
     pleaseWaitDialog = ProgressDialog.show(Activity.this, "Test", "Downloading", true, true); 
     pleaseWaitDialog.setOnCancelListener(new OnCancelListener() { 
      public void onCancel(DialogInterface dialog) {     
      } 
     }); 
    } 

    @Override 
    protected void onProgressUpdate(Integer... values) { 
     super.onProgressUpdate(values); 
    } 

    protected Boolean doInBackground(Object... arg0) { 
     //Some code in here     
     return null; 
    } 
    protected void onPostExecute(Boolean result) {   
     PleaseWaitDialog.dismiss(); 
     return; 
    } 

} 
+1

重複的[這個問題](http://stackoverflow.com/questions/3077461/asynctask-threads-never-die-android)? – Stephan 2011-04-19 15:24:32

回答

1

您的AsyncTask代碼看起來不錯。

線程通常放入池中,以便可以在需要時重用它們。這有時比刪除並稍後重新創建它們更快。

所以一般:不要擔心。 AsyncTask很好,所以你不必擔心。 我在Zwitscher中廣泛使用AsyncTasks,從來沒有任何問題。