Android 图片库记忆使用理论

Android Image Gallery Memory Use Theory

所以,我一直在研究使用位图工厂进行位图缩放。

http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

我这样做是因为我正在开发的应用程序需要一个图库,允许用户提交他们的照片以添加到图库中。然后将从 URL.

中读取这些照片

我的理论问题是这样的:考虑到 android 设备可以有低至 16MB 的内存,即使缩小图像也只会延迟不可避免的事情,除非只处理单个图像。而在我的例子中,将加载的图像数量可能有数百个。这意味着即使它们按比例缩小,最终也会达到那个极限。

到目前为止我唯一的想法是一次加载一张图像,这不是可取的,因为用户将不得不在照片转换之间等待。

也就是说,有没有人有在 android 上开发可处理 100 张图像的应用程序的经验?如果是这样,您是否可以分享任何关于流畅处理所有这些图像的理论?这显然是可以做到的,因为有可用的图库应用程序。我只是不确定他们是如何在限制条件下完成的。

请注意,这不是关于如何使用位图工厂缩放图像的请求,因为这个问题已经回答了很多次。

而是关于处理数据量的请求,您知道会超出限制。

图库应用程序不应在内存中存储所有数千张图像。使用 Viewholder 模式,这样显示的图像视图将被回收(如果您使用 RecyclerView,这是强制要求您的)。在后端使用图像缓存并限制其大小。

参见例如What is the benefit of ViewHolder? and How to release memory of bitmap using imageloader in android?

Android图库应用程序源可能是一个很好的参考:https://android.googlesource.com/platform/packages/apps/Gallery/+/android-5.1.1_r18/src/com/android/camera