2 yang163 yang yang163_yang 于 2014.04.17 10:32 提问

ImageView bitmap size exceeds VM budget

我在一个activity中为一个ImageView设置了从asset中读取出来的图片,ImageView..setImageDrawable(Drawable.createFromStream(getResources()
.getAssets().open("xxx.png"), ""));
图片一般200-500k,第一次显示正常,在模拟器上backpress再进入这个activity时,上一句会出现异常bitmap size exceeds VM budget。
ImageView我声明为 成员变量。
在onDestroyView时,我从根view遍历,把所有view的background drawable调用了setCallback(null). ImageView获取了getDrawable()调用了setCallback(null),仍然会出现异常。

如果我在获取的drawable为BitmapDrawable时调用recycle(),再次进入又会出现try to use recycled bitmap。

1个回答

sylcc_
sylcc_   2014.04.24 11:01

建议对图片进行缩放处理。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
android加载大量图片内存溢出bitmap size exceeds VM budget的解决办法。
方法一: 在从网络或本地加载图片的时候,只加载缩略图。 /** * 按照路径加载图片 * @param path 图片资源的存放路径 * @param scalSize 缩小的倍数 * @return */ public static Bitmap loadResBitmap(String path, int scalSize) { BitmapFactor
Android:解决“Bitmap Size Exceeds VM Budget”错误
我发现开发Android应用时最普遍的错误是“java.lang.OutOfMemoryError: Bitmap Size Exceeds VM Budget”。当Activity使用大量的位图(Bitmap),屏幕方向改变后就会频繁出现这个错误。因为Activity被销毁,然后重新创建,布局从XML文件加载,这个过程消耗了虚拟机为Bitmap分配的可用内存。 由于位图对Activity有交叉
bitmap size exceeds VM budget
Android虚拟机不允许单个程序中的Bitmap占用超过8M的内存,一旦超过了就会报错, 而报的错正是bitmap size exceeds VM budget.
完美解决java.lang.OutOfMemoryError: bitmap size exceeds VM budget
转自http://www.maxhis.info/androiding/bitmap-size-exceed/ 当图片过大,或图片数量较多时使用BitmapFactory解码图片会出java.lang.OutOfMemoryError: bitmap size exceeds VM budget,要想正常使用则需分配更少的内存,具体的解决办法是修改采样值BitmapFactory.Optio
内存溢出的解决办法 Android
昨天在模拟器上给gallery放入图片的时候,出现java.lang.OutOfMemoryError: bitmap size exceeds VM budget 异常,图像大小超过了RAM内存。       模拟器RAM比较小,只有8M内存,当我放入的大量的图片(每个100多K左右),就出现上面的原因。由于每张图片先前是压缩的情况。放入到Bitmap的时候,大小会变大,导致超出RAM内存,具体解决办法如下: //解决加载图片 内存溢出的问题                     //Options 只
动态分配内存空间 bitmap size exceeds VM budget
http://sizeed.blog.163.com/blog/static/965254512012364832902/ 用BitmapFactory解码一张图片时,有时会遇到该错误。这往往是由于图片过大造成的。要想正常使用,则需要分配更少的内存空间来存储。 BitmapFactory.Options.inSampleSize 设置恰当的inSampleSize可以使BitmapF
android: Bitmap size exceeds VM budget
Here's a drop-in solution if anyone is interested. Just derive from BetterActivity instead of Activity. This will clean up all the drawables on orientation change, and likely on activity switches etc.
bitmap size exceeds VM budget 的解决办法分享
昨天遇到这个问题就是从一个输入流里调用BitmapFactory.decodeStream(this.getContentResolver().openInputStream(uri))得到一个bitmap报的错。第一次调用都没问题,第二次再次调用就会报上面那个内存溢出的问题。而且有的手机报有的手机不报。研究了半天终于解决。首先分析了下原因,应该是图片占用的内存超过了系统虚拟机可分配的最大限制。不
java.lang.OutOfMemoryError: bitmap size exceeds VM budget
Part I:  This answer has 2 parts  1) its not how much images the screen has, but being carefull on cleaning everything up when finishing the activity  2) Android dev site (http://developer.an
java.lang.OutOfMemoryError: bitmap size exceeds VM budget解决方法
1 BitmapFactory.decodeFile(imageFile); 用BitmapFactory解码一张图片时,有时会遇到该错误。这往往是由于图片过大造成的。要想正常使用,则需要分配更少的内存空间来存储。 BitmapFactory.Options.inSampleSize 设置恰当的inSampleSize可以使BitmapFactory分配更少的空间以消除该错误。