由于createBitmap报告OOM,Monkey测试失败

在我的自定义View类中,我确定了视图大小后创建了一个位图。

public void onSizeChanged(int w, int h, int oldw, int oldh) {
    if (w == 0) return;
    mBoard = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_4444);
    // draw something on mBoard, to reduce load of onDraw
}

在onDraw中,绘制mBoard到画布和其他东西。

不幸的是createBitmap有时会在猴子测试期间报告OOM,而不是第一次加载视图。 猴子测试会在短时间内多次进入/退出活动。

我猜mBoard已经创建,但在活动退出后不会释放,所以下次进入活动时会分配另一个内存块。 为了解决这个问题,在activity的onDestroy()中,调用View的recycle()方法。

void recycle() {                                                                                                              
    if (mBoard != null) {
        mBoard.recycle();
        mBoard = null;
    }
}

通过调用回收,在使用Runtime.getRuntime()。getFree / MaxMemory()检查空闲/总堆内存时,我仍然没有发现任何差异。 我认为猴子测试可能仍然失败。 谁能帮忙?

链接地址: http://www.djcxy.com/p/93069.html

上一篇: Monkey test fails due to createBitmap reports OOM

下一篇: Clear explanation of the OutOfMemoryError message