Android:Gridview正在缓存过时的项目,如何确保在重新加载页面时为每个显示项目调用getview?

Android:Gridview正在缓存过时的项目,如何确保在重新加载页面时为每个显示项目调用getview?,android,caching,gridview,bitmap,recycle,Android,Caching,Gridview,Bitmap,Recycle,背景: 我有一个包含6个选项卡的主要活动,每个选项卡包含一个包含30多个图像的gridview,并且随时显示大约8个图像(每个gridview都是可滚动的) 对于这些图像,我实现了一个简单的缓存系统,即只缓存其中最新的25个图像,如果需要显示新图像且不在缓存中,我将从/data/date目录解码该图像,并覆盖缓存中最早的条目。在覆盖最旧的条目之前,我将调用Bitmap.recycle() 问题: 在某个时候,在显示超过25幅图像后,旧图像将开始被回收。如果我现在导航回其中一个选项卡,它们的图像不

背景:

我有一个包含6个选项卡的主要活动,每个选项卡包含一个包含30多个图像的gridview,并且随时显示大约8个图像(每个gridview都是可滚动的)

对于这些图像,我实现了一个简单的缓存系统,即只缓存其中最新的25个图像,如果需要显示新图像且不在缓存中,我将从/data/date目录解码该图像,并覆盖缓存中最早的条目。在覆盖最旧的条目之前,我将调用Bitmap.recycle()

问题:

在某个时候,在显示超过25幅图像后,旧图像将开始被回收。如果我现在导航回其中一个选项卡,它们的图像不再在缓存中,那么GetView方法将负责再次加载图片。问题不是Gridview中的第一项将调用GetView,图像的其余部分将永远不会被调用,Gridview将尝试显示已回收的缓存图像

有什么建议吗?在这种情况下,是强制获取视图还是以智能方式缓存图像

非常感谢


谢谢

我通过创建自己的ImageView扩展Android ImageView解决了这个问题。然后重写onDraw(Canvas Canvas)方法,并添加逻辑以在缓存消失时重新加载缓存

看起来很黑。。。但却如愿以偿。如果有人能教我,我真希望我能做得更好。非常感谢