2012-06-26 39 views
2

在我的遊戲中,如果用戶點擊後退按鈕,我會彈出一個對話框詢問他們是否真的要退出。但是,我無法對主頁按鈕執行相同操作,因爲無法覆蓋它。當主頁按鈕被按下時,Android應用程序存在。點擊應用程序圖標啓動應用程序。我希望它只是取消暫停

如果用戶知道任務管理器技巧,他們可以按住回家並切換回應用程序,而不會丟失其位置。

如果他們不知道這個技巧,他們會再次選擇圖標,這會從主菜單中啓動應用程序。

有沒有什麼辦法可以覆蓋這種行爲,這樣,如果應用程序當前正在運行,而不是從主菜單開始,它會回到原來的位置?

我知道我可以在應用程序暫停時保存所有內容,然後以編程方式重新載入所有內容並將它們發送到它們所在的位置。如果可能的話,我想避免必須做所有這些工作。

+0

這不是您正在描述的正常行爲。有一個活動堆棧的原因,該堆棧通常不會被破壞,當你離開應用程序快速訪問主屏幕。也沒有任務管理器技巧,只需點擊我的應用程序圖標,我就可以直接回到我離開我的應用程序的地步。沒有技巧沒有特別的設置。 OnPause也是**不是保存應用程序狀態的正確點。改用onSaveInstanceState。 – tiguchi

+0

我試了一些其他的應用程序,你是對的,他們似乎跳回到他們所在的位置。我的應用程序不像那樣。任何想法,我可能會做什麼導致它總是從主菜單開始?有沒有一個設置? – HappyEngineer

回答

0

但是,我不能對主頁按鈕做同樣的事情,因爲無法覆蓋它。

實際上,您可以覆蓋主頁按鈕。

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if ((keyCode == KeyEvent.KEYCODE_HOME)) { 
      //do your stuff 
      return true; 
     } 
     return super.onKeyDown(keyCode, event); 
    } 

有什麼辦法來覆蓋此行爲,以便代替開始在主菜單中它會回到它在哪裏,如果應用程序正在運行?

關於此問題,您最好的選擇是每Activity覆蓋onPause()方法。但是沒有保證,因爲操作系統可能會選擇在用戶離開應用程序時終止應用程序(可能需要資源需求)。因此,在這種情況下,您的應用程序將從主菜單開始,並且您無法提供幫助。

+0

如果我重寫onPause,我會在那裏做什麼?你是說這就是我保存應用程序狀態的地方,還是有自動保存應用程序狀態的方法? – HappyEngineer

+0

您可以簡單地在'onPause()'中重新啓動相同的'Activity',或者您可以設置一個'SharedPreference'來知道當應用程序暫停時哪個'Activity'正在運行,並恢復該'Activity',或者如您所說,您可以保存應用程序狀態。 –

+1

onPause也不適合開始活動。特別是不同的活動,因爲這基本上使得後退按鈕功能失常,並且用戶「在圈內跑步」。 – tiguchi

相關問題