2011-04-19 11 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

答えて

1

あなたのAsyncTaskのコードはよく見えます。

スレッドは、しばしばプールに入れられ、必要に応じて再利用することができます。これは、削除して後で再作成するよりも速い場合もあります。

だから一般的には心配しないでください。 AsyncTaskは心配する必要がないように作られています。 私はZwitscherで広範囲にAsyncTasksを使用していますが、問題は一度もありませんでした。