0

语境:

我有一个包含 6 个选项卡的主要活动,每个选项卡都包含一个包含 30 多个图像的网格视图,并且随时显示大​​约 8 个图像(每个网格视图都是可缩放的)。

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

问题:

在某些时候,在显示超过 25 张图像后,旧图像将开始被回收。如果我现在要导航回其图像不再在缓存中的选项卡之一,则 GetView 方法将注意再次加载图片。问题在于 Gridview 中的第一个项目将调用 GetView,图像的其余部分将永远不会被调用,并且 Gridview 将尝试显示已被回收的缓存图像。

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

非常感激

谢谢

4

1 回答 1

0

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

看起来很哈克......但按要求工作。如果有人可以教我,我真的希望我能做得比这更好。万分感谢!!

于 2011-01-31T07:43:43.183 回答