我的 MenuActivity 有两个按钮“新游戏”和“恢复”,分别带有 onClick 方法 newGame() 和 resume()
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 分配的内存中看到它。我将如何达到我所描述的理想效果?