[戻る]ボタンを使用してPlayNGameActivityを正しく終了できません。
私は次のコードを使用しています:
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は閉じますが、ゲームを再度実行すると、2つの作業スレッド(前と現在)を持つ同じゲームの2つのコピーが表示され、ルートレイヤーにルートレイヤーの2つのコピーが表示されます。
私は本当に愚かではありませんが、finish()を正しく実行して、すべての内部スレッド/リスナー/レイヤー/オーディオをmemから完全に破壊する方法はありますか?
これ
@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!.");
}
}
しかし、なぜこの例外が発生するのかはまだわかりません。