Windows phone 7 减少Windows Phone应用程序中的内存使用

Windows phone 7 减少Windows Phone应用程序中的内存使用,windows-phone-7,memory,listpicker,windows-phone-7.1.1,Windows Phone 7,Memory,Listpicker,Windows Phone 7.1.1,我正在设计一个应用程序,它有一个超过90项的列表选择器。 每个项目由2个PNG图像(每个图像的大小小于3KB)和一些文本组成 我已经创建了一个新类来表示我的项,我正在使用 List<ClassName> ClassNameList = new List<ClassName>(); 在我的例子中,var1和var2是指向项目中包含的PNG图像的路径 然后,我使用中的数据绑定将我的项目绑定到列表 当我在emulator中加载ListPicker时,内存使用量激增到256MB

我正在设计一个应用程序,它有一个超过90项的列表选择器。 每个项目由2个PNG图像(每个图像的大小小于3KB)和一些文本组成

我已经创建了一个新类来表示我的项,我正在使用

List<ClassName> ClassNameList = new List<ClassName>();
在我的例子中,var1和var2是指向项目中包含的PNG图像的路径

然后,我使用
中的数据绑定将我的项目绑定到列表

当我在emulator中加载ListPicker时,内存使用量激增到256MB以上。 因此,我无法为更新的256MB RAM手机提交我的应用程序。
有没有办法减少内存使用?

图像文件的大小并不意味着它将使用相同的内存量;图像通常是压缩格式(在您的例子中是PNG),文件大小较小。然而,这并不意味着它将使用更少的内存。也请阅读(虽然它是关于WPF的,但在任何情况下都是相同的原则)


我不知道你的情况,但是如果你有很多相同的图片,你可能想考虑缓存你的图片(或者使用例如),以减少内存中重复的图片。

图像文件的大小并不意味着它将使用相同的内存量;图像通常是压缩格式(在您的例子中是PNG),文件大小较小。然而,这并不意味着它将使用更少的内存。也请阅读(虽然它是关于WPF的,但在任何情况下都是相同的原则)


我不知道你的情况,但是如果你有很多相同的图片,你可能想考虑缓存你的图片(或者使用减少内存中的重复图像。

尝试将所有图像存储在独立存储器中,并在用户进入视图时从存储器中加载项目,并删除旧项目。请详细说明一下?特别是你说我应该“删除旧项目”的那部分。你正在向列表选择器添加图像。例如,如果你滚动到字母H,然后加载H和G的项目,我会删除所有其他字母项目。有很多例子,这类似于在列表框中延迟加载,但在这里,当用户到达特定点时,你会删除顶部的项目。确定。我会搜索一下这个。顺便说一句,我没有使用longlistpicker。我的没有显示出奇特的字母网格。那么,它将变得非常容易。当用户进入视图并删除旧项目时,尝试将所有图像存储在独立的存储中,并从存储中加载项目。请详细说明一下?特别是你说我应该“删除旧项目”的那部分。你正在向列表选择器添加图像。例如,如果你滚动到字母H,然后加载H和G的项目,我会删除所有其他字母项目。有很多例子,这类似于在列表框中延迟加载,但在这里,当用户到达特定点时,你会删除顶部的项目。确定。我会搜索一下这个。顺便说一句,我没有使用longlistpicker。我的并没有显示出那个奇特的字母网格,所以这会变得很容易,我读了这个主题。但我尝试加载的图像已经小于60x60像素。因此,我认为进一步使用decodedPixelWidth没有任何意义。您还可以尝试以下MSDN提示和技巧:而且,也许您应该考虑延迟加载,这样您就不会加载所有图像(并且您可以“处理”不在显示项附近的图像)。我阅读了本主题。但我尝试加载的图像已经小于60x60像素。因此,我认为进一步使用decodedPixelWidth没有任何意义。您还可以尝试以下MSDN提示和技巧:而且,也许您应该考虑延迟加载,这样您就不会加载所有图像(并且您还可以“处理”不在显示项附近的图像)。
ClassNameList.Add(new ClassName() {var1=..., var2=...});