Это решение для "mSurfaceExists = true" также не работает для меня. Похоже, SurfaceCreated () не вызывается, потому что super.onWindowVisibilityChanged () не вызывается. Таким образом, поверхность не создается, и она не падает, потому что не вызывается файл treas.start.
Я считаю, что проблема заключается в:
Вызов thread.start () вызывает ошибку, поскольку поток уже запущен.
Но в surfaceDestroyed () thread.join заставляет поток завершиться и умереть. И поток не может быть перезапущен после смерти.
Я предполагаю, что хитрость заключается в том, чтобы создать новый поток в SurfaceCreated или заставить поток завершиться только тогда, когда пользователь вызывает приложение для завершения (клавиша возврата) и не делает паузу (домашний ключ). Это можно проверить, вызвав isFinishing () для действия.
Не уверен, что это сработает. Я скоро попробую.