4

我在我的应用程序中使用 glide 库来显示位图(来自资产和来自 url)。它运作良好,但由于我在每个活动中显示了很多图像,所以我遇到了一些记忆问题。我看到我可以使用 BitmapPool 中的 clearMemory(),但我不知道如何调用它..

有人知道怎么称呼它吗?

谢谢

4

1 回答 1

7

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

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

也就是说,你也不应该这样做。要检查的两件事:

  1. 您是否正在加载多个大图像?如果是这样,你需要确保它们被下采样,所以考虑在你正在加载图像的视图上设置一个明确的大小,或者override()根据你的请求使用 Glide 的 API。与类似的转换一起这样做fitCenter将有助于减少每个图像使用的内存。
  2. 您的应用程序中是否存在内存泄漏?尽管位图分配经常抛出实际的 OutOfMemoryException,但大多数情况下,根本原因是应用程序中其他地方的内存泄漏。如果 #1 不能解决您的问题,请尝试捕获堆转储并检查泄漏。Android 开发者页面有一个很好的教程来说明如何做到这一点。
于 2015-02-01T18:14:07.147 回答