【发布时间】:2013-04-03 17:03:04
【问题描述】:
这是我在 Windows Phone 环境中开发的首批应用程序之一,因此我基本上是边学边学。我有一个带有枢轴控件的应用程序,并且在三个枢轴项中的每一个上都有一个 LongListSelector。当您滚动来自网络的图像时,图像会加载到 longlistselector 中,这是无限滚动(因为一旦在底部看到您的图像就会加载更多)。 但是,在测试中,如果我疯狂滚动以下载大量图像,则会出现以下错误:
'System.OutOfMemoryException' occurred in System.Windows.ni.dll
因为我每次都加载一些相同的图像,所以我实现了 PersistentImageCache (Kawagoe.Storage) 来缓存图像。
http://kawagoe.codeplex.com/wikipage?title=Storage.PersistentImageCache
我是否必须以某种方式在用户向下滚动时卸载图像,并在用户向上滚动时重新加载它们? 或者为每 X 图像清除内存? (我有 HTC 8S,所以对于内存更大的手机来说,这可能不是问题)。
非常感谢。
【问题讨论】:
-
这显然不是一个解决方案,但我想到了,你为手机加载的图像的分辨率是多少?您使用的图片是否超出了屏幕尺寸所需的尺寸?
-
您在项目中使用的是库的编译版本还是源代码?
-
@Caimen 原始图像是 400x300px,我将它们调整为 210x158px,所以那里有一点损失。
-
@NeilTurner 我只是直接在手机上运行(调试)。完全编译它会有所不同吗?
-
是的,因为代码很旧并且是为 WP7 设计的。 WP8 中的存储处理方式也略有不同。另外,如果使用源代码会更容易调试。
标签: c# memory windows-phone-8 storage windows-phone