使用ImageTools for Windows Phone时出现内存不足异常

本文关键字:内存不足 异常 Phone ImageTools for Windows 使用 | 更新日期: 2023-09-27 18:20:01

我正在尝试在我的Windows Phone 8 Silverlight应用程序中播放Gifs。为此,我使用Imagetools。它运行得很好,除非有时我得到OutOfMemoryException。我使用的是诺基亚Lumia 1020(2 GB RAM,内存使用限制为780 MB)进行测试。

我有一个SilverLight ListBox,里面有多个模板。其中两个是-

<local:ModuleTemplateSelector.ImageGif>
    <DataTemplate>
        <StackPanel Margin="20,10">
            <imagetools:AnimatedImage Source="{Binding src, Converter={StaticResource ImageConverter}}"/>
        </StackPanel>
    </DataTemplate>
</local:ModuleTemplateSelector.ImageGif>
<local:ModuleTemplateSelector.ImageOther>
    <DataTemplate>
        <Grid Margin="20,10">
            <Image Source="{Binding src}"/>
        </Grid>
    </DataTemplate>
</local:ModuleTemplateSelector.ImageOther>                                      

一个模板用于gif,另一个用于.jpg、.png等

我正在使用API获取ListBox中的数据。因此,有时除了.jpg和.png之外,还有两个以上的三个gif,这导致了OutOfMemoryException。我确信问题出在Imagetools本身。

那么,我应该如何避免这种例外情况呢?在Windows Phone 8应用程序中还有其他播放礼物的方法吗?谢谢

使用ImageTools for Windows Phone时出现内存不足异常

检查DeviceStatus.ApplicationMemoryUsageLimit返回的内容,并尝试在运行时使用DeviceStatus.ApplicationCurrentMemoryUsage监控应用程序内存使用情况。

但我相信这是已知的ImageTools错误。要在Windows Phone88.1中显示图像,只需使用默认的Image控件。它很好地支持GIF。

编辑:由于图像控制不支持GIF中的动画,我做了一个快速搜索-你可以尝试这个修复https://imagetools.codeplex.com/workitem/10396用于图像工具:

在构造函数中添加。。

this.Unloaded += new RoutedEventHandler(AnimatedImage_Unloaded);

void AnimatedImage_Unloaded(object sender, RoutedEventArgs e)
{
    Stop();
}

这将停止计时器,并在不再使用时强制卸载控件。

或者你可以试着做一些类似的事情http://advertboy.wordpress.com/2012/05/08/animated-gifs-in-xamlc/并自己制作动画。