У меня есть настройка SurfaceView, но когда я возобновляю его, я получаю сообщение об ошибке, что поток уже запущен. Как правильно обращаться, когда приложение переходит в фоновый режим, а затем возвращается на передний план? Я повозился и смог заставить приложение вернуться без сбоев ... но SurfaceView больше ничего не рисует. Мой код:
@Override
public void surfaceCreated(SurfaceHolder holder) {
Log.e("sys","surfaceCreated was called.");
if(systemState==BACKGROUND){
thread.setRunning(true);
}
else {
thread.setRunning(true);
thread.start();
Log.e("sys","started thread");
systemState=READY;
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
Log.e("sys","surfaceDestroyed was called.");
thread.setRunning(false);
systemState=BACKGROUND;
}
Следует использовать методы Activity onPause () и onResume ().
Сначала запустите поток в функции surfaceCreated (). Кроме того, в onResume () убедитесь, что поток еще не запущен (сохраните переменную внутри потока или что-то в этом роде). Затем, если он не работает, снова установите его как работающий. в onPause () приостановите поток. В surfaceDestroyed снова приостановите нить.