2012-11-17 36 views
2

我正在用WP7平台进行自动图像缓存的可怕时间。禁用WP7中的图像缓存

我做了一个非常简单的应用程序(我的意思是真正简单)。他们2的照片已经在溶液中加入PIX维度的内容1280 * 2000 这里是XAML

<Grid x:Name="LayoutRoot" Background="Transparent" ManipulationCompleted="ImageHolder_ManipulationCompleted"> 
    <Image x:Name="ImageHolder" /> 
    <TextBlock x:Name="MemoryUsage" /> 
</Grid> 

我的.cs

ImageHolder.Source = null; 
     if (i % 2 == 0) 
      ImageHolder.Source = new BitmapImage(new Uri("image002.jpg", UriKind.Relative)); 
     else 
      ImageHolder.Source = new BitmapImage(new Uri("image001.jpg", UriKind.Relative)); 
     i++; 

    MemoryUsage.Text = "Device Total Memory = " + (long)DeviceExtendedProperties.GetValue("DeviceTotalMemory")/(1024 * 1024) 
      + "\nCurrent Memory Usage = " + (long)DeviceExtendedProperties.GetValue("ApplicationCurrentMemoryUsage")/(1024 * 1024) 
      + "\nPeak Memory Usage = " + (long)DeviceExtendedProperties.GetValue("ApplicationPeakMemoryUsage")/(1024 * 1024); 

内存使用率非常高等于2个图像在原始位图大小中,尽管应该只有一个这样的实例。请帮助,我急需。

回答

1

首先将图像调整为正确的大小。如果屏幕不支持它,没有必要具有如此高的分辨率。还要确保图像的构建操作是“内容”,否则所有图像将在启动时加载到内存中。您可能仍然会看到内存使用量过高,因为没有保修卡,GC会立即处理图像,但迟早会处理。

+0

实际上这是我的测试应用程序,我创建了另一个测试应用程序,基本上做同样的事情,但周期与像30-40许多图像。但是那个测试应用程序在某个时间之后会出现问题我会调整我的主应用程序的最终版本的图像大小,我担心,因为如果这不被纠正,它会爬进主应用程序,在那里问题可能不立即apppear,因为,图像很小,但最终将耗尽内存。已经在256MB仿真器上测试过。 –

+0

如果经常更改图像,则可以在更改图像后尝试手动调用GC。只需调用GC.Collect();请确保将图像大小调整为100%,这将为您节省大量内存,并提高整体性能,因为在运行时不需要调整大小。 –

+0

是啊,试过,但不能保证GC会踢,在我的情况下,它不会。 –