我正在使用MvvmCross在Xamarin的Windows Phone應用程序上工作。在這個應用程序中,用戶從他的手機中選擇一些圖像。他們會顯示在列表中,然後用戶會對他們做任何事情。Windows Phone高內存使用率與圖像
我使用FileOpenPicker的文件選擇,並從我所創建BitmapImages文件顯示
foreach (StorageFile file in args.Files) {
BitmapImage thumbnail = new BitmapImage();
thumbnail.DecodePixelType = DecodePixelType.Physical;
try {
using (IRandomAccessStream fileStream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read)) {
thumbnail.DecodePixelHeight = 70;
thumbnail.DecodePixelWidth = 70;
thumbnail.SetSource(fileStream);
fileStream.Dispose();
}
}
catch (OutOfMemoryException e) {
Mvx.Trace("MEMORY IS FULL");
}
一些其他的代碼,我把這些BitmapImages一個的ObservableCollection後,像這樣
<Image Style="{StaticResource imageListImage}" Source="{Binding Thumbnail}"/>
顯示它們
沒什麼特別的。 我使用的測試圖像總大小爲34 MB。 使用VS中的性能和診斷工具,我可以確定應用程序在開始時的內存使用量約爲16 Mb。當我將測試圖像加載到應用程序時,它最高可達58 MB。就好像它仍然使用全尺寸的圖像。和(只是爲了測試),當我把decodepixelheight和寬度離開它飆升到約350 MB。我完全不知道爲什麼它會爲圖像使用如此多的內存。
因爲應用程序必須能夠使用更多更大的圖像,所以我需要找到一種方法來減少內存使用量。有誰知道我如何做到這一點?
謝謝你的回答。我現在已經找到了解決方案。雖然這不是你向我展示的內容,但是你從另一個帖子給我的鏈接有解決方案。使用file.getScaledImageAsThumbnailAsync它會使用更少的內存(不知道爲什麼)。雖然將來我的應用程序還需要顯示整個圖片庫,因此我將查看您在那裏展示的ISupportIncrementalLoading。再次感謝您的幫助 – StijnvanGaal