如果經常開發App,WP7上的Image顯示造成的內存增大問題一定會遇到,以下是一些使用技巧幫助減少這類情況的發生:
JPG vs. PNG
如果不是必須要使用透明圖片,JPG是最好的選擇,WP7的JPG編碼速度要大大快於PNG
Resource vs. Content
將圖片(或其它種類資源)用何種類型進行XAP編譯綁定的時候。Resource和Content有很大的不同,Resource會綁定到Dll之中,在顯示圖像時很快,但加載整個XAP包時很慢。而Content會使得加載XAP應用時很快,但加載圖像時稍慢一些。根據情況選用,使用方法:
Content: <Image Source=”/ImagesAsContent/smiley1.png”/>
Resource: <Image Source=”..\ImagesAsResource\smiley3.png”/>
Async vs. Sync 異步或同步加載圖片
BitmapImage.UriSource = uriSource; // 從URI中讀取,異步加載
BitmapImage.SetSource(stream); // 從流中讀取,同步加載
圖片緩存
如果內存沒有被回收,可以考慮主動釋放:
BitmapImage bitmapImage = image.Source as BitmapImage;
bitmapImage.UriSource = null;
image.Source = null;
自定義編碼
如果所需圖片尺寸不需要很大,可以將來源進行重編碼,使用PictureDecoder API可完成這個操作如下:
image.Source = PictureDecoder.DecodeJpeg(jpgStream, 192, 256);