Android-игра гаснет после нажатия дома и перезапуска - PullRequest
1 голос
/ 06 апреля 2010

Я делаю игру для Android с Activity под названием Game, SurfaceView под названием GameView и Thread под названием GameThread. В Game onCreate () я создаю новый GameView, который создает новый GameThread, в котором выполняется вся логика игры и рисование холста.

Однако у меня возникли некоторые трудности с жизненным циклом. Когда я нажимаю назад и перезагружаю его, он работает нормально, но когда я нажимаю home и перезагружаю его, я вижу только пустой экран. Вот onSurfaceCreated () и onSurfaceDestroyed () GameView:

@Override
public void surfaceCreated(SurfaceHolder holder) {
    mThread.mRunning = true;
    mThread.mWidth = getWidth();
    if(mThread.mWidth > 550) mThread.mWidth = 550;
    mThread.mHeight = getHeight();
    try {
        mThread.start();
    } catch(IllegalThreadStateException e) {
    }

}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {
    // Wait for the secondary thread to end before finishing
    boolean retry = true;
    mThread.mRunning = false;
    while (retry) {
        try {
            mThread.join();
            retry = false;

        } catch (InterruptedException e) {
        }
    }       
}

1 Ответ

0 голосов
/ 06 апреля 2010

По моему опыту, кнопка "Назад" завершает действие, поэтому при перезапуске метод onCreate вызывается снова.

Вместо этого кнопка «Домой» не завершает действие. Когда вы нажимаете кнопку «Домой», вызывается метод действия onPause, а при перезапуске вызывается метод onResume.

Я полагаю, у вас есть некоторый код в onCreate, который отвечает за создание SurfaceView. Попробуйте добавить этот код в метод onResume (переопределяя его) ...

...