0

私はアンドロイドでゲームを開発していますが、奇妙なバグがあります。初めてアプリを実行するとすべて正常に実行されますが、ホームボタンを押してからアプリに戻ると、ログを使用して onResume() が呼び出されていないことがわかります。ホームボタンを押すと onPause() メソッドが呼び出されます。

public class MainActivity extends Activity {
GameView gV;
public static final String PREFS_NAME = "ShNCoPrefs";

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    gV=new GameView(this);
    setContentView(gV);
    this.setVolumeControlStream(AudioManager.STREAM_MUSIC);
    // Restore preferences
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
    boolean isFirstPlay = settings.getBoolean("isFirstPlay", true);
    gV.setFirstPlay(isFirstPlay);



}

@Override
public void onResume(){
    super.onResume();
    Log.i("onResume", "main-pasó por aquí 1");
    if (gV.thread!=null)
    gV.runThread();
    Log.i("onResume", "main-pasó por aquí 2");


}

@Override
public void onPause(){
    super.onPause();
     SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
     SharedPreferences.Editor editor = settings.edit();
     editor.putBoolean("isFirstPlay", gV.isFirstPlay());

  // Commit the edits!
     editor.commit();
  if(gV.thread!=null)
     gV.pauseThread();

    //System.exit(0);

}


@Override
public boolean onKeyUp(int keyCode, KeyEvent event){
    switch (keyCode) {
    case KeyEvent.KEYCODE_BACK:
        return true;


    }
    return super.onKeyUp(keyCode, event);
}}

ありがとうございます。私の英語が下手で申し訳ありません。

4

1 に答える 1

1
private boolean isActive = false;
@Override
public void onResume() {
   super.onResume();
   isActive = true;
}

@Override
pulic void onPause() {
  super.onPause();
  isActive = false;

}

//Do it if is not active
if(!isActive){
   //Operation you want to Perform
}

これらを試してください。それはあなたを助けるかもしれません。

于 2013-01-10T13:04:50.103 に答える