Android,将 BitmapPool 与 Glide 库一起使用

标签 android bitmap android-glide

我在我的应用程序中使用 glide 库来显示位图(来自 Assets 和 url)。 它运作良好,但由于我在每个 Activity 中显示大量图像,所以我遇到了一些内存问题。 我看到我可以使用 BitmapPool 中的 clearMemory(),但我不知道如何调用它..

有人知道怎么调用它吗?

谢谢

最佳答案

您可以使用 clearMemory()trimMemory()清除 Glide 的内存缓存和位图池:

Glide.get(context).clearMemory()
// or:
Glide.get(context).trimMemory(ComponentCallbacks2.TRIM_MEMORY_MODERATE);

也就是说,您不需要做任何一个。要检查两件事:

  1. 您是否正在加载多张大图片?如果是这样,您需要确保它们被下采样,因此请考虑在您正在加载图像的 View 或使用 Glide 的 override() 上设置一个明确的大小。 API 根据您的要求。结合像 fitCenter 这样的转换来这样做将有助于减少每张图像使用的内存。
  2. 您的应用程序中是否存在内存泄漏?尽管位图分配经常抛出实际的 OutOfMemoryException,但大多数时候根本原因是应用程序其他地方的内存泄漏。如果 #1 不能解决您的问题,请 try catch 堆转储并检查是否有泄漏。 Android 开发者页面有 a great tutorial如何做到这一点。

关于Android,将 BitmapPool 与 Glide 库一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27778500/

相关文章:

android - 通过fragment更新listview

android - Appcelerator/Titanium Android 主题 - 无法打包应用程序

cardview onTouch监听器冲突/灵敏度中的android listview

Android可绘制内存管理

android - 使用 Glide 下载时位图会失去透明度

java - 使用android登录网站

vb.net - 将内存中的字节复制到 VB.NET 中的数组

java - 将 Google+ 个人资料图片从 Uri 获取到 Android 上的位图

java - 在Android中的Canvas上绘制圆外的位图(箭头)

Android Kotlin - 使用 Bitmap 和 Glide 实现自定义 map 标记