我想要做的事情應該很簡單。Android避免onDestroy()與onBackPressed()
我有一款遊戲,用一個提供各種選項的屏幕啓動StartActivity,其中之一是「開始遊戲」。
當用戶選擇該選項,遊戲正確的開始代碼類似於:
Intent i = new Intent();
i.setClass(context, GameActivity.class);
context.startActivity(i);
這一切工作正常。當遊戲中按下「返回」按鈕時,控制權返回到此StartActivity。再次,這很好。
然而,按下「back」導致調用「onDestroy()」(按照文檔) - 這意味着當再次按下「開始遊戲」時,GameActivity會從頭開始。
我想要的是當按下「返回」時將GameActivity保存在內存中,以便按下「開始遊戲」返回到它已經停止的地方。
這幾乎是每一款遊戲都有的功能,所以必須非常簡單,但是我不知道如何去做。我一直試圖以回到StartActivity的方式重載onBackPressed(),但沒有成功;做這樣的事情:
public void onBackPressed() {
Intent i = new Intent(this, StartActivity.class);
startActivity(i);
}
意味着堆棧的增長永遠,即A - >乙 - >離開ABA,而不是僅僅A.
我知道一般的活動流(HTTP:// developer.android.com/reference/android/app/Activity.html)。
我是否以錯誤的方式啓動GameActivity?
#作爲對僚機的迴應,我意識到各種活動狀態,並且如果需要釋放內存,可能會調用onDestroy()。我在onPause()上保存遊戲狀態並在onResume()上加載,但不是當時內存的完整狀態。
如果我按下「home」,應用程序被「最小化」生效,並返回到重新啓動時的位置 - onDestroy()未被調用。我試圖模擬這種行爲,但將應用程序返回到StartActivity而不是「home」。
後退按鈕總是調用onDestroy(),因爲我可以從文檔(或完成()至少)收集。
發生這種情況時,所有遊戲都會保存完整狀態嗎?我會很驚訝,但也許他們會。