在Android中加载大量图片

时间:2018-07-11 19:41:33

标签: android out-of-memory android-bitmap

我试图将许多缩略图加载到GridView中,但是最终出现在OutOfMemoryException中。我想将大约500-1000(甚至更多)图像加载到GridView中,并且我打算使用MINI_SIZE缩略图。现在,我要问这是一种理想的低性能方法。

2 个答案:

答案 0 :(得分:1)

要加载图像,请使用AsyncTask之类的后台线程,并使用带有Recyclerview的{​​{1}}和GridLayoutManager,它们应在拖动时加载图像,而不是一次全部加载

答案 1 :(得分:1)

这是RecyclerView进入图片的地方。

什么是RecyclerView?

  

这就像一个ListView,您的android系统将在其中自动回收那些不再在屏幕上可见的视图。它允许用户在视图之间(垂直和水平)滚动,并维护自己的缓存。 “自动回收”在这里的意思是,它维持“不再可见的视图”的阈值,然后重新使用那些超过阈值限制的视图。

嗯!但是,您将如何加载这么多图像,这会不会引起ANR?

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

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

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