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