我的项目中有一个异步任务,如下所示。

@SuppressLint("NewApi")

private void callTask() {

    new Task() {

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

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

我在内将这个callTask​​()方法称为循环10次。

我的任务正在并行执行,并且工作正常。我想一次停止所有任务。我怎样才能做到这一点?

最佳答案

您需要将每个任务(异步任务)的实例保存在ArrayList或任何其他结构中,并将您的Task对象添加到其中
请检查以下代码:

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);
    }
}

09-25 20:15