Windows phone 7 在WP7中禁用图像缓存

Windows phone 7 在WP7中禁用图像缓存,windows-phone-7,windows-phone-7.1,Windows Phone 7,Windows Phone 7.1,我对WP7平台的自动图像缓存感到很不舒服 我做了一个非常简单的应用程序(我是说非常简单)。它们在解决方案中已经添加了2张图像,作为pix维度1280 x 2000的内容 这是XAML <Grid x:Name="LayoutRoot" Background="Transparent" ManipulationCompleted="ImageHolder_ManipulationCompleted"> <Image x:Name="ImageHolder" />

我对WP7平台的自动图像缓存感到很不舒服

我做了一个非常简单的应用程序(我是说非常简单)。它们在解决方案中已经添加了2张图像,作为pix维度1280 x 2000的内容 这是XAML

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

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

首先,将您的图像调整到正确的大小。如果屏幕不支持,那么拥有如此高的分辨率是没有意义的。另外,请确保图像的构建操作为“内容”,否则所有图像将在启动时加载到内存中。您可能仍然会看到高内存使用率,因为没有担保GC会立即处理图像,但迟早会处理。

实际上这是我的测试应用程序,我创建了另一个测试应用程序,它基本上做相同的事情,但会循环处理许多图像,如30-40。但这个测试应用程序在一段时间后就会崩溃。我会在我的主应用程序的最终版本中调整图像的大小,我很担心,因为如果不纠正,它将潜入主应用程序,而问题可能不会立即出现,因为图像很小,但最终会耗尽内存。已在256MB emulator中测试。如果您经常更改图像,可以尝试在更改图片后手动调用GC。只需调用GC.Collect();请确保将图像大小调整为100%的比例,这将节省大量内存并提高整体性能,因为在运行时不需要调整大小。是的,尝试过,但它不能保证GC会启动,在我的情况下,它不会。实际上,此测试应用程序是另一个测试应用程序的结果。事实证明,图像缓存是WP7的问题,有一个解决办法,但我仍然面临缓存其他一些问题。看看这个,我提出这个问题是因为没有太多响应,所以我尝试深入到问题。如果你能帮我。。。
   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);