0

有没有遇到过?有人可以给我一个打击如何处理吗?多谢。

在我的游戏中,我使用了大量的Canvas.clipRect()函数,我发现,在android 4.0及以上,游戏运行10分钟后,它的进程被activityManager杀死。我放弃了使用 Canvas.clipRect(),它运行了很长时间。

4

1 回答 1

0

尝试使用 Canvas.clipRegion() 而不是使用 Canvas.clipRect()。这个对我有用。

示例解决方法:

public void setClipNoOOM(int left, int top, int right, int bottom, Region.Op op, android.graphics.Canvas canvas) {
    if (op == Region.Op.INTERSECT)
        canvas.clipRect(left, top, right, bottom, op);
    else {
        RectF rectF = new RectF(left, top, right, bottom);
        Matrix m = canvas.getMatrix();
        m.mapRect(rectF);
        Region region = new Region((int)rectF.left, (int)rectF.top, (int)rectF.right, (int)rectF.bottom);
        canvas.clipRegion(region, op);
    }
}
于 2013-11-13T10:46:50.600 回答