使用Android中的后退按钮正确退出PlayN游戏

时间:2012-08-26 14:40:41

标签: android exit playn

我无法使用“返回”按钮正确退出PlayN GameActivity。

我正在使用以下代码:

public class Loader extends GameActivity {
    public void main(){
        PlayN.run(new Game());  
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            finish();
        }
        return super.onKeyDown(keyCode, event);
    }
}

但是不够正确。

GameActivity关闭,但是如果再次运行游戏,它将显示同一游戏的两个副本,其中包含两个工作线程(前一个和当前),在根层中,您将看到两个根层副本。

我真的很蠢,但是如何正确地完成()使用所有内部线程/监听器/图层/音频从mem中消除GameActivity?


@Override
public boolean onKeyDown(int keyCode, KeyEvent event){
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        this.finish();
    }
    return super.onKeyDown(keyCode, event);
}

只有在游戏中未使用 PlayN.assets()。getSound(...)。play()时才有效,否则所有活动在退出时都会崩溃。

我找到了一个小的解决方法,你应该在你的GameActivity中覆盖onDestroy方法:

@Override
public void onDestroy() {
    super.onStop();
    try {
        super.onDestroy();
    } catch (IllegalStateException e) {
        android.util.Log.e("Easy", "JVM: playn.android.AndroidCompressedSound.MediaPlayer melts my brain!.");
    }
}

但仍然不知道为什么会发生这种异常。

1 个答案:

答案 0 :(得分:0)

首先,尝试使用:this.finish();而不是完成();

或使用以下技术:

覆盖当前活动的onDestroy,如下所示:

  @Override
protected void onDestroy() {
    super.onDestroy();
    System.runFinalizersOnExit(true);
    System.exit(0);

}

并调用它,即this.onDestroy();

Imp:它会杀死与你的app相关的所有正在进行的进程!