【发布时间】:2014-10-12 19:13:59
【问题描述】:
我正在 listview 上的线程池上创建 asynchtask。我正在通过 asynchtask 的 listarray 处理这些任务。当片段被破坏时,我必须删除这些任务,并且在销毁最后一个片段后制作新片段时必须再次分配这些任务。
我在 listview 适配器中的代码是
if(FragmentNowPlaying.task.isEmpty()){
FragmentNowPlaying.task.add( new ProgressAsynchTask(holder.info,tvShows, position));
FragmentNowPlaying.task.get(position).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
else if(position >= FragmentNowPlaying.task.size()){
FragmentNowPlaying.task.add( new ProgressAsynchTask(holder.info,tvShows, position));
FragmentNowPlaying.task.get(position).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
else if(position < FragmentNowPlaying.task.size()){
if(FragmentNowPlaying.task.get(position).getStatus().RUNNING == null){
FragmentNowPlaying.task.remove(position);
FragmentNowPlaying.task.add( new ProgressAsynchTask(holder.info,tvShows, position));
FragmentNowPlaying.task.get(position).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
} else if(FragmentNowPlaying.task.get(position).getStatus().RUNNING != null){
FragmentNowPlaying.task.get(position).cancel(true);
FragmentNowPlaying.task.remove(position);
FragmentNowPlaying.task.add( new ProgressAsynchTask(holder.info,tvShows, position));
FragmentNowPlaying.task.get(FragmentNowPlaying.task.size()-1).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
}
问题是我无法删除和取消最后一个 asynchtask 线程,这导致 rejectedExecuationException 并且不允许它在线程池大小达到时创建新线程。 请告诉我如何解决这个问题?所以我的进度条运行顺利,让我免于这个错误。
再次提醒我有一个具有列表视图的片段。
【问题讨论】:
标签: android android-fragments android-asynctask threadpool