Highlight icon indicating copy to clipboard operation
Highlight copied to clipboard

Bitmap容易出现OOM

Open XHiStone opened this issue 9 years ago • 18 comments

mMaskBitmap = Bitmap.createBitmap(getMeasuredWidth(), getMeasuredHeight(), Bitmap.Config.ARGB_8888);

XHiStone avatar Dec 01 '16 06:12 XHiStone

嗯,我也是遇见过OOM这地方.......

yanftch avatar Dec 01 '16 10:12 yanftch

目前打算修改Bitmap.Config.ARGB_8888Bitmap.Config.ARGB_4444

isanwenyu avatar Dec 05 '16 06:12 isanwenyu

嗯, 测试发现用4444没问题 @ isanwenyu 关于Layout冗余的问题呢?

yanftch avatar Dec 05 '16 07:12 yanftch

改成Bitmap.Config.ARGB_4444之后,还是会出现OOM。。。。。 @isanwenyu

yanftch avatar Dec 06 '16 01:12 yanftch

@Override
protected void onDraw(Canvas canvas) {
    canvas.drawBitmap(mMaskBitmap, 0, 0, null);
    super.onDraw(canvas);

}

为什么这儿要将drawBitmap放在super之前啊 @isanwenyu

yanftch avatar Dec 06 '16 02:12 yanftch

@Override
protected void onDraw(Canvas canvas) {
    canvas.drawBitmap(mMaskBitmap, 0, 0, null);
    super.onDraw(canvas);

}

为什么这儿要将drawBitmap放在super之前啊 @isanwenyu

yanftch avatar Dec 06 '16 02:12 yanftch

super.onDraw(canvas); 是空方法

isanwenyu avatar Dec 06 '16 03:12 isanwenyu

现在在2G内存手机上,多开几个程序,各种OOM,要命~ @isanwenyu

yanftch avatar Dec 07 '16 06:12 yanftch

在绘制完成后主导回收创建的位图对象

自测收效甚微

    /**
     * 主动回收之前创建的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

@hongyangAndroid 请教 有没有更好的方案

isanwenyu avatar Dec 09 '16 10:12 isanwenyu

OOM的问题,处理过几次,并没有解决,求大神解决~ @isanwenyu @hongyangAndroid

yanftch avatar Jan 04 '17 11:01 yanftch

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.graphics.Bitmap.isRecycled()' on a null object reference

在Fragment使用,发现这个问题

BryceLee avatar Jan 06 '17 01:01 BryceLee

额。。这个空指针问题,我遇到过一次,后来没复现过。。。。

yanftch avatar Jan 06 '17 02:01 yanftch

@IvenMax 我是必现。 你在Fragment里面使用过吗?

BryceLee avatar Jan 06 '17 02:01 BryceLee

没有在Fragment中用过。。。 @Hellozhongxin

yanftch avatar Jan 06 '17 02:01 yanftch

@Hellozhongxin 这个是v1.7.3的bug后面版本已修复 请更新为最新版本 Download 再试

isanwenyu avatar Jan 06 '17 05:01 isanwenyu

请教,1.7.5的版本,这儿的OOM解决了吗? @isanwenyu

yanftch avatar Jan 06 '17 06:01 yanftch

目前没有更好的方案 参考我上面的回复吧

isanwenyu avatar Jan 06 '17 07:01 isanwenyu

https://github.com/A-Heavy-Rain/GuideView 无需创建bitmap的实现。

A-Heavy-Rain avatar Nov 21 '17 02:11 A-Heavy-Rain