@Override public void surfaceDestroyed(SurfaceHolder holder) { isCreated = false; Log.w("MySurfaceView", "surfaceDestroyed"); boolean retry = true; // close thread processCameraDataThread.stopProcessing(); while (retry) { try { processCameraDataThread.join(); retry = false; } catch (InterruptedException e) { // try again } } }