ListBox:WP8上的内存异常

时间:2014-05-29 05:56:01

标签: c# image windows-phone-8 listbox

我的数据库中有两个ListBox,每个都有一个图像。

<DataTemplate x:Key="PostsFieldItemTemplate" >
    ...
      <Image  Grid.Row="0" Margin="5" Width="100" Height="100" HorizontalAlignment="Left" Source="{Binding WImage}" Stretch="UniformToFill"/>
    ...
</DataTemplate> 

<DataTemplate x:Key="ItemTemplateListBoxAnimation">
    ...
    <Image Width="235" Height="210" Grid.Row="0" Source="{Binding tImage}" Stretch="UniformToFill"/>
    ...
</DataTemplate>

我在我的代码中将url字符串添加到图像

PostsField.Items.Add(new ListPost(post.id, api.improveText(post.title), api.improveText(post.excerpt), post.attachments[0].url, api.improveDate(post.date)));

GridImages.Items.Add(new TempGrid(post.id, post.attachments[0].url, api.improveText(post.title), api.improveDate(post.date)));

然后我按下我的按钮&#34;加载更多&#34;在某些时候我收到异常(Out Of Memory)。我在ItemTemplates中注释掉<Image Source="{Binding MyImage}"... />,一切正常..

请告诉我,我该怎么做才能改善我的形象?

1 个答案:

答案 0 :(得分:1)

应用程序的内存使用限制在这里是详细信息。你可以找到详细信息here

正如您所提到的那样,您正在加载图像形式API(我认为是Web API)。并在某些按钮单击列表框中显示它们,并在某些时候抛出内存不足异常。现在在低内存手机上,一个应用程序可以使用高达150MB的手机内存。当您的应用超过该限制时,它会抛出此异常。您可以做的是从列表框中删除/处置以前添加的图像以释放内存,而不是添加新图像。

您可以使用DeviceExtendedProperties.GetValue(String)方法检查ApplicationWorkingSetLimit值,以检查应用程序可用的内存限制。有关如何执行此操作的示例,请参阅How to disable features in apps for lower-memory phones for Windows Phone 8

希望这有帮助