ydn*_*nas 1 multithreading android threadpool threadpoolexecutor
我的项目中有一个异步任务,如下所示.
@SuppressLint("NewApi")
private void callTask() {
new Task() {
@Override
protected void doInBackground(String... params) {
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,
string1,string2 );
}
Run Code Online (Sandbox Code Playgroud)
我在for循环中调用这个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);
}
Run Code Online (Sandbox Code Playgroud)
在您想要取消所有任务之后,您需要再次循环取消所有检查以下代码
@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);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2210 次 |
| 最近记录: |