Как приостановить и возобновить поток SurfaceView.

У меня есть настройка 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;
    }
14
задан PGSystemTester 18 June 2018 в 15:37
поделиться

1 ответ

Следует использовать методы Activity onPause () и onResume ().

Сначала запустите поток в функции surfaceCreated (). Кроме того, в onResume () убедитесь, что поток еще не запущен (сохраните переменную внутри потока или что-то в этом роде). Затем, если он не работает, снова установите его как работающий. в onPause () приостановите поток. В surfaceDestroyed снова приостановите нить.

0
ответ дан 1 December 2019 в 12:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: