我有一个gridView
,它包含大约300个元素。每个元素都有一个CCD_ 2。当调用getView()
时,启动异步映像加载程序,它首先在LruCache
中查找映像,然后在外部存储中查找,然后在网络中查找。异步任务通过参数为AsyncTask.THREAD_POOL_EXECUTOR
的executeOnExecutor
启动。问题是,如果我滚动网格视图的速度太快,就会创建很多线程,应用程序会因而崩溃
E/AndroidRuntime(14980): java.util.concurrent.RejectedExecutionException: Task android.os.AsyncTask$3@42426f98 rejected from java.util.concurrent.ThreadPoolExecutor@41c6c800[Running, pool size = 128, active threads = 128, queued tasks = 10, completed tasks = 3]
有人能建议一些控制任务量的方法来避免此类异常吗。非常感谢。
您可以参考android文档,使用两种方法缓存位图
- 使用内存缓存或
- 使用磁盘缓存
您也可以使用第三方库来缓存图像,但这种方法有一个问题。如果图像缓存在磁盘上,则默认情况下很少有库不支持缓存清除选项。