【发布时间】:2015-10-26 20:23:06
【问题描述】:
我是应用程序开发的新手,我遇到了一些困境。我有一种方法可以从服务器下载图像,然后将其转换为位图,以便将其分配给 ImageView。问题是,如果我调用它超过 10 次,应用程序就会崩溃并出现 OutOfMemory 异常。我尝试使用Dispose() 删除旧位图,但它没有按预期工作。有任何解决这个问题的方法吗?
代码:
/...
string url = deviceModel.LastPhotoLink;
Bitmap imageBitmap = await new ImageDownloader().GetImageBitmapFromUrlAsync(url, Activity);
lastPhoto.SetImageBitmap(imageBitmap);
imageBitmap.Dispose();
/...
public async Task<Bitmap> GetImageBitmapFromUrlAsync(string url, Context context) {
WebClient client = new WebClient();
ISharedPreferences pref = context.GetSharedPreferences("UserSession", FileCreationMode.Private);
string cookie = pref.GetString("PHPSESSID", string.Empty);
client.Headers.Add(HttpRequestHeader.Cookie, "PHPSESSID=" + cookie);
var imageBytes = await Task.Run(() => client.DownloadData(url));
Bitmap imageBitmap = await Task.Run(() => BitmapFactory.DecodeByteArray(imageBytes, 0, imageBytes.Length));
return imageBitmap;
}
【问题讨论】:
标签: c# android caching bitmap xamarin