我试图将许多缩略图加载到GridView中,但是最终出现在OutOfMemoryException中。我想将大约500-1000(甚至更多)图像加载到GridView中,并且我打算使用MINI_SIZE缩略图。现在,我要问这是一种理想的低性能方法。
答案 0 :(得分:1)
要加载图像,请使用AsyncTask
之类的后台线程,并使用带有Recyclerview
的{{1}}和GridLayoutManager
,它们应在拖动时加载图像,而不是一次全部加载
答案 1 :(得分:1)
这是RecyclerView
进入图片的地方。
什么是RecyclerView?
这就像一个ListView,您的android系统将在其中自动回收那些不再在屏幕上可见的视图。它允许用户在视图之间(垂直和水平)滚动,并维护自己的缓存。 “自动回收”在这里的意思是,它维持“不再可见的视图”的阈值,然后重新使用那些超过阈值限制的视图。
嗯!但是,您将如何加载这么多图像,这会不会引起ANR?
有两种方法可以解决此问题:
HandlerThread
或AsyncTask
或仅使用Thread
一次加载所有项目,并显示ProgressBar
直到完成加载。但是这种方法可能会在某些设备中导致OOM (Out Of Memory)
。此外,不要忘记使用Glide来缓存图像。