在WP7中禁用图像缓存

时间:2012-11-17 09:50:54

标签: windows-phone-7 windows-phone-7.1

WP 7平台的自动图像缓存让我度过了一段可怕的时光。

我制作了一个非常简单的应用程序(我的意思是真的很简单)。他们已经在解决方案中添加了 2张图像作为pix尺寸1280 x 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 个答案:

答案 0 :(得分:1)

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