语境:
我有一个包含 6 个选项卡的主要活动,每个选项卡都包含一个包含 30 多个图像的网格视图,并且随时显示大约 8 个图像(每个网格视图都是可缩放的)。
有了这么多图像,我实现了一个简单的缓存系统,即只缓存其中最新的 25 个,如果需要显示新图像并且不在缓存中,我将从 /data/date 目录中解码该图像并覆盖缓存中最旧的条目。在覆盖最旧的条目之前,我将调用 Bitmap.recycle() 。
问题:
在某些时候,在显示超过 25 张图像后,旧图像将开始被回收。如果我现在要导航回其图像不再在缓存中的选项卡之一,则 GetView 方法将注意再次加载图片。问题在于 Gridview 中的第一个项目将调用 GetView,图像的其余部分将永远不会被调用,并且 Gridview 将尝试显示已被回收的缓存图像。
有什么建议吗?在这种情况下强制获取视图或缓存图像的智能方式?
非常感激
谢谢