Android,使用BitmapPool与Glide库

4

我在我的应用程序中使用Glide库来显示位图(从资产和URL中获取的)。它工作正常,但是由于在每个活动中都显示了大量图像,我会遇到内存不足的问题。

我发现可以使用BitmapPool中的clearMemory()方法,但我不知道如何调用它。

有谁知道如何调用它吗?

谢谢。

1个回答

7

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

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

说了这么多,其实你不需要做任何事情。有两个方面需要检查:
  1. 你是否加载了多个大图像?如果是,请确保它们已经被降采样,可以考虑在加载图像的视图上设置一个明确的大小,或者使用Glide的override() API来请求。与fitCenter变换一起使用可以帮助减少每个图像使用的内存。
  2. 你的应用程序中是否存在内存泄漏?尽管位图分配通常会抛出实际的OutOfMemoryException,但大多数情况下根本原因是应用程序其他地方的内存泄漏。如果第1点不能解决你的问题,请尝试捕获堆转储并检查泄漏。Android开发者页面有一个很好的教程来介绍如何进行操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接