android 4.0及以上版本,Canvas.clipRect(),内存泄漏

时间:2013-04-23 09:34:04

标签: android

是否有人见过面?有人可以给我一个打击如何处理它?非常感谢。

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

1 个答案:

答案 0 :(得分: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);
    }
}