您的位置:首页 > 移动开发 > Android开发

android中由于下载图片造成的内存溢出的解决方法

2011-12-29 14:28 441 查看
结合了网上的一些思路的说明,自己谢了个关于下载图片时防止内存的方法,如下:
/**
* 下载图片
* @param imageUrl 地址
* @return
*/
public Drawable loadImageFromNetwork(String imageUrl) {
Drawable drawable = null;
try {
int index = imageUrl.lastIndexOf("/");
String image_name = imageUrl.substring(index + 1);
// 可以在这里通过文件名来判断,是否本地有此图片
if (GlobalData.image_cache.containsKey(image_name)) {
drawable = GlobalData.image_cache.get(image_name).get();
//内存不足时,将缓存区清空(当然此时因为drawable对象是软引用,所以都被回收)
if(drawable==null)
{
GlobalData.image_cache.clear();
loadImageFromNetwork(imageUrl);
}
} else {
drawable = Drawable.createFromStream(
new URL(imageUrl).openStream(), image_name);
//软引用的Bitmap对象
SoftReference<Drawable> srDrawable = new SoftReference<Drawable>(drawable);
//添加该对象到Map中使其缓存
GlobalData.image_cache.put(image_name,srDrawable);
}

} catch (IOException e) {
Toast.makeText(c, "图片下载失败", Toast.LENGTH_LONG)
.show();
}
return drawable;
}

如果大家觉得还有不妥的地方,可以留言给我,o(∩_∩)o 共同进步!

参考网址:http://developer.android.com/resources/articles/avoiding-memory-leaks.html

http://blog.sina.com.cn/s/blog_5da93c8f0100w185.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐