2014-04-29 71 views
0

我的項目中有一個異步任務,如下所示。如何停止在線程池執行程序中運行的任務Android

@SuppressLint("NewApi") 

private void callTask() { 

    new Task() { 

     @Override 
     protected void doInBackground(String... params) { 

     } 
    }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, 
       string1,string2); 
    } 

和我要求環路 10次內部此callTask​​()方法。

我的任務並行執行,它工作正常。我想在一個時間點停止所有的任務。我怎樣才能做到這一點?

+0

我已經看到了相關的一些職位。 [Not being Canceled](http://stackoverflow.com/questions/11165860/asynctask-oncancelled-not-being-called-after-canceltrue)和 [理想的方式來取消asynctask](http://stackoverflow.com /問題/ 2735102 /理想路到取消-AN-執行-的AsyncTask) – UrielUVD

回答

3

您需要保存在一個ArrayList的或任何其他結構的每一個任務(異步任務)的情況下,你的任務對象添加到它

請檢查下面的代碼:

private ArrayList<Task> array_task = new ArrayList<Task>(); 
private void callTask() { 

Task task = new Task() { 

    @Override 
    protected void doInBackground(String... params) { 

    } 
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, 
      string1,string2); 
array_task.add(task); 

} 

並經過當你想取消所有任務,你需要一個for循環再次取消所有 檢查下面的代碼

@Override 
    public void onClick(View v) { 
     switch (v.getId()) { 
     case R.id.cancel_all_task: 
      callCancel_AllAsyncTask(); 
      break; 

     } 

    } 

private void callCancel_AllAsyncTask() 
{ 
    for(int i=0;i<array_task.size();i++) 
    { 
     array_task.get(i).cancel(true); 
    } 
} 
相關問題