我的应用程序中有一张地图,显示了 Gowalla 的位置。我使用带有简单默认标记的 ItemizedOverlay,但在绘制项目时,我将默认标记替换为从 Gowalla 下载(9 并缓存在磁盘上)的位置图标。
问题是,如果屏幕上有很多位置(例如 30 个),则内存中位图的大小足以使 Activity 崩溃。为了防止这种情况,我只保留位图的软引用。不幸的是,这意味着位置将在默认标记和图标之间闪烁(即,图标已加载,但随后存在内存压力,因此它们被删除,但随后重新加载,因为它们在屏幕上......)。
当我从 Gowalla 下载图像时,我已经根据屏幕尺寸缩小了它们(HDPI 为 48x48,MDPI 为 32x32,等等),所以这些图像并不是很大,但我仍然被迫选择可能会导致我的应用程序崩溃或图标闪烁。有其他方法可以减少位图使用的内存吗?
不幸的是,这永远是一个问题。您可以尝试下采样。将图像加载到 Bitmap 对象时出现奇怪的内存不足问题 https://stackoverflow.com/questions/477572/android-strange-out-of-memory-issue/823966#823966
您可以尝试将图像保存到临时文件系统,这样就不必每次都访问网络。这应该对消除闪烁有很大帮助,甚至可能 100% 有帮助。将其与基于访问的堆缓存(如果您愿意构建一个)结合起来,您可能会做得很好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)