Bitmap容易出现OOM
mMaskBitmap = Bitmap.createBitmap(getMeasuredWidth(), getMeasuredHeight(), Bitmap.Config.ARGB_8888);
嗯,我也是遇见过OOM这地方.......
目前打算修改Bitmap.Config.ARGB_8888为Bitmap.Config.ARGB_4444
嗯, 测试发现用4444没问题 @ isanwenyu 关于Layout冗余的问题呢?
改成Bitmap.Config.ARGB_4444之后,还是会出现OOM。。。。。 @isanwenyu
@Override
protected void onDraw(Canvas canvas) {
canvas.drawBitmap(mMaskBitmap, 0, 0, null);
super.onDraw(canvas);
}
为什么这儿要将drawBitmap放在super之前啊 @isanwenyu
@Override
protected void onDraw(Canvas canvas) {
canvas.drawBitmap(mMaskBitmap, 0, 0, null);
super.onDraw(canvas);
}
为什么这儿要将drawBitmap放在super之前啊 @isanwenyu
super.onDraw(canvas); 是空方法
现在在2G内存手机上,多开几个程序,各种OOM,要命~ @isanwenyu
在绘制完成后主导回收创建的位图对象
自测收效甚微
/**
* 主动回收之前创建的bitmap
* @param bitmap
*/
private void recycleBitmap(Bitmap bitmap) {
if (bitmap != null && !bitmap.isRecycled())
{
bitmap.recycle();
bitmap = null;
System.gc();
}
}
在 AndroidManifest.xml application标签内设置应用的 android:largeHeap="true"
ref
- http://stackoverflow.com/questions/25360439/create-bitmap-out-of-memory-in-android
- http://stackoverflow.com/questions/477572/strange-out-of-memory-issue-while-loading-an-image-to-a-bitmap-object?rq=1
@hongyangAndroid 请教 有没有更好的方案
OOM的问题,处理过几次,并没有解决,求大神解决~ @isanwenyu @hongyangAndroid
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.graphics.Bitmap.isRecycled()' on a null object reference
在Fragment使用,发现这个问题
额。。这个空指针问题,我遇到过一次,后来没复现过。。。。
@IvenMax 我是必现。 你在Fragment里面使用过吗?
没有在Fragment中用过。。。 @Hellozhongxin
请教,1.7.5的版本,这儿的OOM解决了吗? @isanwenyu
目前没有更好的方案 参考我上面的回复吧
https://github.com/A-Heavy-Rain/GuideView 无需创建bitmap的实现。