【问题标题】: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);
}
}