Android ViewPager问题:Bitmap缓存

3
我有一个ViewPager,其中包含ImageView作为子视图。ImageView显示从网络加载的位图和/或缓存在本地缓存中的位图,该缓存实现为基于LruCache的类(来自Android支持库)。问题是,当图像从LruCache中删除时,GC似乎无法释放或过晚释放位图内存。即使旧的位图已从LruCache和ViewPager的持有ImageViews中移除(我已从ViewPager中删除了视图),在加载新的位图时经常会出现OutOfMemory异常。我读到有时候(?)你必须调用Bitmap.recycle(优先于Android 3.0)但这并没有起作用。在ICS上也不起作用(我没有调用Bitmap.recycle)。如何解决这个问题?
3个回答

0
问题不在于处理多张图像,而是当您的活动被销毁时,您的图像没有被取消分配。
在没有查看您的代码的情况下,很难说这是为什么。但是,本文提供了一些可能有帮助的技巧:

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


0
你可以从安卓开发者site中查看BitmapFun示例,了解如何高效地显示位图。示例已经有了图片的GridView和ViewPager,您可以在构建应用程序时参考它们。尽管示例存在一些缓存issue,但我已经做了一些解决。您可以here查看它。

0
垃圾回收器不会回收仍有引用的位图。我想你可能有ImageView挂在你的位图上。ViewPager不会回收视图,因此当ImageView未显示时,您需要清除它。

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