我正在使用 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/