2011-04-19 3 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)이 작업은 웹 서버에서 파일을 다운로드합니다. 작업이 완료되면 위의 목록에서 사라지지 않아야합니까?안드로이드 스레딩 문제

작업을 제대로 끝내지 못했습니까?

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를 광범위하게 사용하고 있으며 어떤 문제도 발생하지 않았습니다.