У меня есть MenuActivity с двумя кнопками «Новая игра» и «Возобновить» с методами onClick newGame() и возобновить() соответственно.
Метод newGame() запускает GameActivity и завершает MenuActivity.
метод возобновления(). При возобновлении () 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. Как мне достичь желаемого эффекта, как я описал?