android - 如何在调用新的异步任务时终止以前的任务

标签 android listview android-asynctask

我正在使用 asynctask 从给定的 url 获取图像。这些图像显示在 ListView 中。问题是当我快速滚动 ListView 时应用程序崩溃。logcat 错误是

03-27 13:08:42.355: E/AndroidRuntime(25567): java.util.concurrent.RejectedExecutionException: pool=128/128, queue=10/10

从这个错误我开始知道这是并行运行许多异步任务线程的问题。为了解决这个问题我写了下面的代码。

   NWTaskObj obj = new NWTaskObj();
            obj.setType(AdapterType.OfferAdapter);
            obj.setLink(offer.getImageLink());
            obj.setObject(this);
            if(count<10){
            new HandleOfferImage().execute(obj); 
            }else{
            new HandleOfferImage().cancel(true);
            new HandleOfferImage().execute(obj); 
            }

count 是一个静态变量。它在 HandleOfferImage 类中递增。但它仍然在同一场景中崩溃。我需要终止之前的异步任务(如果计数 >10)除了最后一个.我不想在这里使用惰性列表。有人可以帮助我吗?

最佳答案

new HandleOfferImage().cancel(true);

错了。将任务指针保存在像 mTask 这样的变量中,然后

mTask.cancel(true);

更新:

if (mTask!= null) {
    mTask.cancel(true);
}

mTask= new TaskGetTeams();
mTask.execute();

关于android - 如何在调用新的异步任务时终止以前的任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9885922/

相关文章:

android - Flutter - 选定的项目移动到 ListView 的顶部

android - for循环在异步任务的Doinbackground中不递增

android - android中asyntask参数有什么区别?

安卓异步任务问题

android - 覆盖onMeasure()的权威方法?

android - scrollView 中的 fillViewPort 到底是做什么的?

android - 如何在android中的整个应用程序中保存rediobutton的状态?

android - 使用 minSdkVersion 之外的 API 级别的属性

java.lang.IllegalStateException : couldn't move cursor to position n

listview - 缓存图像 (ffimageloading) 在 android 上出现 OUT OF MEMORY 错误 - xamarin 表单