3

我有一个带有 ImageView 作为子视图的 ViewPager。ImageView 显示从网络加载和/或缓存到本地缓存的位图,实现为基于 LruCache 的类(来自 Android 支持库)。问题是当从 LruCache 中删除图像时,GC 似乎没有释放或释放太晚的位图内存。即使从 LruCache 和 ViewPager 的持有 ImageViews 中删除了旧位图(我从 ViewPager 中删除了视图),我在从网络/磁盘加载新位图时也经常遇到 OutOfMemory 异常。我读到有时(?)您必须调用 Bitmap.recycle(在 Android 3.0 之前),但这不起作用。它也不适用于 ICS(我不在那里调用 Bitmap.recycle)。如何解决这个问题呢?

4

3 回答 3

0

如果某些东西仍在引用它,垃圾收集器将不会回收您的位图。我想你的位图上有 ImageViews。ViewPager 不会回收视图,因此您需要在未显示 ImageView 时清除它。

于 2012-08-07T20:30:36.043 回答
0

您可以查看来自 android 开发者网站的 BitmapFun 示例,了解如何有效地显示位图。该示例已经包含图像的 GridView 和 ViewPager,您可以在构建应用程序时参考这些图像。尽管该示例存在一些缓存问题,但我已经解决了一些问题。你可以在这里查看

于 2013-12-12T02:17:50.547 回答
0

问题不在于处理很多图像,而是当您的活动被销毁时您的图像没有被释放。

如果不查看您的代码,很难说出为什么会这样。但是,本文有一些提示可能会有所帮助:

http://blog.booking.com/android-reuse-bitmaps.html

于 2016-02-06T21:30:04.927 回答