Я полагаю, что это происходит из-за несоответствия в том, как обрабатываются Поверхность и Деятельность. Когда вы выходите из приложения LunarLander, поверхность разрушается (вызывая surfaceDestroyed), но действие только приостанавливается (вызывая onPause). Когда действие возобновляется, поверхность создается (вызывая SurfaceCreated), и она пытается снова начать процесс рисования.
Это означает, что создание потока происходит с жизненным циклом действия, а уничтожение потока происходит с жизненным циклом SurfaceView, который не всегда соответствует, таким образом, исключение IllegalThreadStateException. Решением было бы связать нить с одним жизненным циклом, а не с обоими.
Я думаю эта тема предлагает возможное решение, хотя я не знаю, работает ли оно.