2014-09-24 26 views
0

我有一個gridView,它包含大約300個元素。每個元素都有一個imageView。當調用getView()時,啓動異步圖像加載程序,它首先在LruCache中查找圖像,然後在外部存儲器中,然後在網絡中查找。異步任務通過executeOnExecutor開始,參數爲AsyncTask.THREAD_POOL_EXECUTOR。 而問題是,如果我滾動網格視圖太快,很多線程的創建和應用程序崩潰與一個正確的排隊和取消asynctasks的方法

E/AndroidRuntime(14980): java.util.concurrent.RejectedExecutionException: Task [email protected] rejected from [email protected][Running, pool size = 128, active threads = 128, queued tasks = 10, completed tasks = 3] 

任何人都可以建議一些方法來控制的任務量,以避免這種例外。 謝謝。

+0

我建議你使用任何圖像加載庫,如通過Square或Universal Image Loader加載圖像的Picasso。這些庫允許您可以使用許多配置。 – 2014-09-24 10:33:54

回答

1

你可以參考到Android documentation使用兩種方法

  • 使用內存高速緩存或
  • 使用磁盤高速緩存

您也可以使用第三方庫緩存圖像緩存位圖但這種方法存在一個問題。 如果圖像緩存在磁盤上,很少庫默認不支持緩存清除選項。