在 Android 中加载大量图像

Loading lots of images in Android

我试图将大量缩略图加载到 GridView 中,但最终出现了 OutOfMemoryException。我想将大约 500-1000(或更多)图像加载到 GridView 中,并且我计划使用 MINI_SIZE 个缩略图。现在我想问的是,理想的低性能方法是什么。

要加载图像,请使用像 AsyncTask 这样的后台线程,并使用 RecyclerviewGridLayoutManager,这应该在您拖动时加载图像,而不是一次加载所有图像

这就是 RecyclerView 发挥作用的地方。

什么是 RecyclerView?

It's like a ListView in which your android system will automatically recycle those views which are not visible on the screen anymore. It allows the user to scroll(vertically and horizontally) between the views and it maintains it's own cache. What `automatically recycling" means here is that it maintains a threshold of "not-anymore visible views" and then re-uses those views which have passed the threshold limit.

嗯!但是怎么加载那么多图片,不会引起ANR吗?

有两种方法可以解决这个问题:

  1. 使用 RecyclerView 的 Infinite/Endless Scrolling,它会首先加载一定比例的图像,当用户滚动时,它会自动加载更多图像。
  2. 使用 HandlerThreadAsyncTask 或简单的 Thread 一次加载所有项目并显示 ProgressBar 直到加载完成。但是这种方法在某些设备上可能会导致OOM (Out Of Memory)

此外,不要忘记使用 Glide 来缓存图像。