2012-11-17 63 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會踢,在我的情況下,它不會。 –