1

我正在使用一个名为 Game 的 Activity、一个名为 GameView 的 SurfaceView 和一个名为 GameThread 的线程制作一个 Android 游戏。游戏的onCreate(),我新建了一个GameView,新建了一个GameThread,所有的游戏逻辑和画布绘制都在这里进行。

但是,我遇到了一些生命周期困难。当我按下并重新启动它时,它工作正常,但是当我按下主页并重新启动它时,我看到的只是一个空白屏幕。下面是 GameView 的 onSurfaceCreated() 和 onSurfaceDestroyed():

@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) {
        }
    }       
}
4

1 回答 1

0

以我的经验,后退按钮完成 Activity,因此当您重新启动它时,会再次调用 onCreate 方法。

相反,Home Button 并没有结束 Activity,当你按下 Home Button 时会调用 Activity 的 onPause 方法,当你重新启动它时,调用的方法是 onResume。

我猜您在 onCreate 中有一些代码负责创建 SurfaceView。尝试将此代码添加到 onResume 方法(覆盖它)...

于 2010-04-06T15:10:18.040 回答