使用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应用程序中还有其他播放礼物的方法吗?谢谢
检查DeviceStatus.ApplicationMemoryUsageLimit
返回的内容,并尝试在运行时使用DeviceStatus.ApplicationCurrentMemoryUsage
监控应用程序内存使用情况。
但我相信这是已知的ImageTools错误。要在Windows Phone8或8.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/并自己制作动画。