今天测试程序的时候出现下面的错误日志信息,程序当场挂掉

07-09 14:11:25.434: W/System.err(4890):     java.lang.OutOfMemoryError: bitmap size exceeds VM budget
07-09 14:11:25.435: W/System.err(4890): at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
07-09 14:11:25.435: W/System.err(4890): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:511)
07-09 14:11:25.435: W/System.err(4890): at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:325)
07-09 14:11:25.435: W/System.err(4890): at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:350)

使用Bitmap加载图片的方法是这样的

     vipAvatar = (ImageView) findViewById(R.id.vip_avatar);
File file = new File(Environment.getExternalStorageDirectory()
+ IMAGE_FILE_NAME);
if (file.exists()) {
Bitmap bitmap = BitmapFactory.decodeFile(Environment
.getExternalStorageDirectory() + IMAGE_FILE_NAME);
Drawable drawable = new BitmapDrawable(bitmap);
vipAvatar.setImageDrawable(drawable);
}

在使用BitmapFactory.decodeFile的时候出错了,查找原因

android系统限制,只给图片分配8兆的内存,超过就崩,你图片几十KB,可能是压缩格式的,转换成bitmap就是本来的大小。

增加VM的设置不太现实,如果是在模拟器上没问题,但是考虑到真机使用,问题还是要解决的。

这里使用了一种方法,上述情况没有出现,方法是

在退出Activity时,将bitmap回收

  @Override
protected void onDestroy() {
if (bitmap != null && !bitmap.isRecycled())
bitmap.recycle();
super.onDestroy();
}

//////////////////////////////////////////////

原创声明 转载请注明

本文出自 Ray-Ray的博客

文章地址 http://www.cnblogs.com/rayray/p/3180017.html

感谢大家的推荐和收藏

你的支持! 我们的动力!

【Android】Bitmap加载图片错误 java.lang.OutOfMemoryError: bitmap size exceeds VM budget的更多相关文章

  1. android报错及解决1--Bitmap加载时,报bitmap size exceeds VM budget

    报错描述: 用Bitmap加载图片资源时,报错java.lang.OutOfMemoryError: bitmap size exceeds VM budget 原因分析: android系统限制,只 ...

  2. Android Glide 加载图片

    0.借鉴文章地址:http://blog.csdn.net/zivensonice/article/details/51835802 和 http://www.cnblogs.com/zhaoyanj ...

  3. Android Glide加载图片时转换为圆形、圆角、毛玻璃等图片效果

     Android Glide加载图片时转换为圆形.圆角.毛玻璃等图片效果 附录1简单介绍了Android开源的图片加载框架.在实际的开发中,虽然Glide解决了快速加载图片的问题,但还有一个问题悬 ...

  4. 演化理解 Android 异步加载图片(转)

    演化理解 Android 异步加载图片(转)http://www.cnblogs.com/CJzhang/archive/2011/10/20/2218474.html

  5. java.lang.OutOfMemoryError: bitmap size exceeds VM budget解决方法

    1 BitmapFactory.decodeFile(imageFile); 用BitmapFactory解码一张图片时,有时会遇到该错误.这往往是由于图片过大造成的.要想正常使用,则需要分配更少的内 ...

  6. bitmap size exceeds VM budget

    bitmap size exceeds VM budget we can avoid this error by the following parts:1  its not how much ima ...

  7. wemall app商城源码中基于JAVA的Android异步加载图片管理器代码

    wemall doraemon是Android客户端程序,服务端采用wemall微信商城,不对原商城做任何修改,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可随意定制修改.本文分享其中 ...

  8. 实例演示Android异步加载图片

    本文给大家演示异步加载图片的分析过程.让大家了解异步加载图片的好处,以及如何更新UI.首先给出main.xml布局文件:简单来说就是 LinearLayout 布局,其下放了2个TextView和5个 ...

  9. 实例演示Android异步加载图片(转)

    本文给大家演示异步加载图片的分析过程.让大家了解异步加载图片的好处,以及如何更新UI.首先给出main.xml布局文件:简单来说就是 LinearLayout 布局,其下放了2个TextView和5个 ...

随机推荐

  1. IEnumerable和IEnumerator使用

    IEnumerable接口是非常的简单,只包含一个抽象的方法GetEnumerator(),它返回一个可用于循环访问集合的IEnumerator对象. IEnumerator是一个真正的集合访问器,没 ...

  2. css3 翻转

    参考资料: WEB骇客  :  http://www.webhek.com/css-flip/ Demo : Demo(谷歌浏览器观看,没做兼容) Demo截图: 代码: <!DOCTYPE h ...

  3. 关于iwinfo的调试

    在调试 主动扫描时,调用命令 “iwinfo  wlan0 scan”时, 在iwinfo中添加的调试语句没有打印和记录到log中去. 后查看iwinfo的makefile发现,在生成iwinfo程序 ...

  4. layui 左侧三级菜单栏

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  5. 一个简单的Loading控件

    实现效果如下: 使用方法: 在layout文件中添加以下代码: <com.example.jack.ui.widget.RingLoading android:layout_width=&quo ...

  6. Python-HTML转义字符

    ISO Latin-1字符集:  — 制表符Horizontal tab  — 换行Line feed  — 回车Carriage Return  — Space ! ! — 惊叹号Exclamati ...

  7. 手机CPU架构体系分类及各大厂商

    手机cpu相关知识,这对于开发Android应用程序适应各个机型有一定的辅助作用 . 手机cpu架构体系分类 指令集可分为复杂指令集(CISC)和精简指令集(RISC)两部分,代表架构分别是x86.A ...

  8. IntelliJ IDEA插件 - ApiDebugger

    IntelliJ IDEA插件 - ApiDebuggerApiDebugger,是一个开源的接口调试IntelliJ IDEA插件,具有与IDEA一致的界面,无需切换程序即可完成网络API请求,让你 ...

  9. 哎呀,搬运blog好累啊,96篇呢QwQ

    累死了,哼 哎呀,算了,不搬了不搬了

  10. sql查询条件为空的另类写法o( ̄▽ ̄)d

    简单描述:今天看老大提交的代码,发现了一个有意思的事情,一条sql中判断条件是空,老大的写法,让我眼前一亮.直接上代码 代码: <select id="getxxxs" re ...