私は、それぞれ onClick メソッド newGame() と resume() を持つ 2 つのボタン "New Game" と "Resume" を持つ MenuActivity を持っています。
newGame() メソッドは GameActivity を開始し、MenuActivity を終了します。
再開()メソッド。resume() を実行すると、MenuActivity 自体が終了し、事実上 GameActivity が自動的に再開されます。バックスタックになるからです。なぜバックスタックになるのですか?GameActivity では、onBackPressed メソッドが MenuActivity を開始しますが、終了しないため、バックスタックに留まります。
public class MenuActivity extends Activity{ ... public void newGame(View view){ Intent intent = new Intent(this,GameActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); this.finish(); } public void resume(View view){ this.finish(); } }
public class GameActivity extends Activity{
...
@Override
public void onBackPressed() {
Intent inMain=new Intent(this, MenuActivity.class);
startActivityForResult(inMain, 0);
}}
シナリオは次のとおりです。新しいゲーム ボタンが押されます。つまり、MenuActivity が終了し、GameActivity が開始されます。ゲームのある時点でユーザーが戻るボタンを押すと、MenuActivity が開始されます。MenuActivity で、ユーザーが新しいゲーム ボタンをもう一度押します。GameActivity の古いインスタンスを完全に終了し、保持しているすべてのメモリを解放して、新しいインスタンスを最初から開始する必要があります。ただし、現在、新しいゲームが開始されると、古いバージョンはまだメモリ内にあり、DDMS に割り当てられたメモリから確認できます。私が説明したような望ましい効果を得るにはどうすればよいでしょうか?