今天测试程序的时候出现下面的错误日志信息,程序当场挂掉html
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加载图片的方法是这样的java
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
android系统限制,只给图片分配8兆的内存,超过就崩,你图片几十KB,多是压缩格式的,转换成bitmap就是原本的大小。ide
增长VM的设置不太现实,若是是在模拟器上没问题,可是考虑到真机使用,问题仍是要解决的。测试
这里使用了一种方法,上述状况没有出现,方法是spa
在退出Activity时,将bitmap回收日志
@Override protected void onDestroy() { if (bitmap != null && !bitmap.isRecycled()) bitmap.recycle(); super.onDestroy(); }
//////////////////////////////////////////////code
原创声明 转载请注明htm
本文出自 Ray-Ray的博客blog
文章地址 http://www.cnblogs.com/rayray/p/3180017.html
感谢你们的推荐和收藏
你的支持! 咱们的动力!