ビットマップがフル解像度でメモリにロードされないように、ビットマップをスケーリングする必要があります。アルファ、レッド、グリーン、ブルーのすべてのカラー値を保持するには、ピクセルあたり 4 バイトを割り当てる必要があるため、サイズが 100kb のビットマップはメモリ内で 400kb になります。画像をカメラで撮影すると、サイズが簡単に 10 倍になり、すぐに大量のメモリが消費されます。
画像を拡大縮小しているのがわかりますDecodeSampledBitmap
が、不要になったときに破棄する必要もあります。
SetBitmap
ビットマップを破棄するのを忘れた場合は、次のステートメントを簡単に配置できますusing
。
using(var bitmap = ImageDownloader.DownloadImage( url, width, height ))
{
if( !token.IsCancellationRequested )
(this.m_context as Activity).RunOnUiThread(
() => imageView.SetImageBitmap( bitmap )
);
}
Xamarin ドキュメントのLoad Large Bitmaps Efficiently 記事もご覧ください。