@Override public void run() { long ticksPS = 1000 / FPS; long startTime; long sleepTime; while (running) { mGameCanvas = null; startTime = System.currentTimeMillis(); try { mGameCanvas = mGameView.getHolder().lockCanvas(); synchronized (mGameView.getHolder()) { mGameView.update(); if (mGameCanvas != null) mGameView.draw(mGameCanvas); } } finally { if (mGameCanvas != null) { mGameView.getHolder().unlockCanvasAndPost(mGameCanvas); } } sleepTime = ticksPS - (System.currentTimeMillis() - startTime); try { if (sleepTime > 0) sleep(sleepTime); else sleep(10); } catch (Exception e) { } } }
@Override public void run() { long tickPS = 1000 / FPS; long startTime; long sleepTime; while (isRunning) { Canvas c = null; startTime = System.currentTimeMillis(); try { c = gameView.getHolder().lockCanvas(); synchronized (gameView.getHolder()) { gameView.draw(c); } } finally { if (c != null) { gameView.getHolder().unlockCanvasAndPost(c); } } sleepTime = tickPS - (System.currentTimeMillis() - startTime); try { if (sleepTime > 0) sleep(sleepTime); else sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } } }