// ACTION METHODS public void run() { Canvas c; while (mode == Mode.RUNNING) { c = null; try { c = holder.lockCanvas(null); synchronized (holder) { onDraw(c); } } finally { if (c != null) { holder.unlockCanvasAndPost(c); } } } synchronized (mode) { while (mode == Mode.PAUSED) { try { mode.wait(); } catch (InterruptedException e) { Log.v(TAG, "interrupted wait"); } } } }