Androidでゲーム開発して、テストしていたら特定の機種だけ落ちる場所が!
Android6.0.1でおそらくMarshmallowでエラーが吐かれるようです。
修正前
canvas.rotate(player.getRotated(), player.getX() + (player.getWidth() / 2), player.getY() + (player.getHeight() / 2));
player.draw(canvas);
canvas.restore();
frontground.draw(canvas);
canvas.restore();の部分でIllegalStateException: Underflow in restore - more restores than savesと怒られてしまいました。
canvas.restore();はcanvasの状態を復元させるメソッドですが、復元する状態がわからないのが問題みたいです。
解決するには、canvasを編集する前に状態をしっかり保存してあげなければいけません。
修正後
canvas.save();
canvas.rotate(player.getRotated(), player.getX() + (player.getWidth() / 2), player.getY() + (player.getHeight() / 2));
player.draw(canvas);
canvas.restore();
frontground.draw(canvas);
このコードではcanvas.rotate()をする前にcanvas.save();で状態を保存してあげることで解決しました!