【问题标题】:How to stop the task running in a Thread Pool Executor Android如何停止在线程池执行器 Android 中运行的任务
【发布时间】:2014-06-14 20:58:59
【问题描述】:

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

@SuppressLint("NewApi")

private void callTask() {

    new Task() {

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

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

我在 for 循环 中调用了这个 callTask​​() 方法 10 次。

我的任务正在并行执行,并且运行良好。我想在某个时间点停止所有任务。我怎样才能做到这一点?

【问题讨论】:

标签: android multithreading threadpool threadpoolexecutor


【解决方案1】:

您需要将每个任务(异步任务)的实例保存在 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);
    }
}

【讨论】:

    猜你喜欢
    • 2013-07-22
    • 2021-05-17
    • 2014-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-08
    • 2011-05-30
    • 2019-12-29
    相关资源
    最近更新 更多