0

有沒有什麼辦法來防止在按下主頁按鈕後返回到應用程序內的onResume執行代碼?
按下主頁按鈕時會調用什麼方法?當主頁按鈕被按下時,我可能會標記一些東西?

感謝Android - 預防onResume返回到應用程序後,主頁按鈕

+0

究竟什麼是你的要求嗎? 你能詳細解釋一下嗎? –

+0

我基本上不想在用戶按下主頁按鈕後返回到應用程序後執行onResume中的代碼。如果我可以使布爾executeResumeCode = false;當主頁按鈕被按下,然後把一個條件來檢查這個時,簡歷被調用,我認爲這將工作 –

回答

2

上述方法覆蓋後,現在您可以輕鬆地使用的onkeydown()方法聽HOME鍵在您的活動。

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) {  

    if(keyCode == KeyEvent.KEYCODE_HOME) 
    { 
     //The Code Want to Perform. 
    } 
}); 

希望這將有助於

+0

嗨,感謝您的回覆,但它看起來像這樣已被刪除後的Anroid 4.0 :( –

+0

嗯,這是正確的朋友。 – sukhbir

+1

但您可以通過檢查在Android中當前運行的應用程序,以便做到這一點。你可以說,如果你是在長按home鍵顯示近期的任務,然後將其發送到後臺。 ,在你的onPause()的你可以檢查應用程序是否已經發送到後臺。@Override public void onPause(){ if(isApplicationSentToBackground(this)){ //做你想做的事在檢測主鍵被按下時進行 } super.onPause(); } – sukhbir

0

攻的主頁按鈕創建一個意圖啓動主屏幕,然後啓動該INTEN 正確的。

如果是這種情況,我希望在創建主屏幕時運行onCreate()方法 不一定。如果它已經在運行,那麼將使用onNewIntent()來調用它。

如果有人可以只提供一些啓示此事,基本的問題是,是否的onResume()或的onCreate()當我點擊主頁按鈕 任何時候,任何活動從用戶輸入的角度返回到前臺被調用, onResume()被調用。主屏幕在這方面應該沒有什麼不同。

onCreate()在創建活動時被調用。現有的活動不是創建的,而是僅僅被帶回到前臺。如果觸發活動返回到前臺的是startActivity()調用,則爲此,將使用onNewIntent()和onResume()(通常onStart()調用該活動)。


參考:Which method is run when Home button pressed?

0

用戶可以留下你的應用在各種不同的方式。按HOME只是其中之一。來電會留下您的應用,拉下通知列表並按下一個會離開您的應用等。在所有這些情況下,當用戶返回到您的應用時,onResume()將被調用。這是標準的Android行爲,並告訴您的應用程序現在處於前景並且對用戶可見。

如果您需要知道用戶如何返回到您的應用,那麼您的架構有缺陷。您可能需要將onResume()中的一些代碼移回onCreate()onNewIntent()

+0

謝謝。我知道這個。 onResume()在onCreate()之後調用,每次用戶返回到應用程序,但這不是我的問題。我的問題是我怎麼可以防止一些代碼通過的onResume()時,按home鍵後,用戶返回到應用程序,該解決方案被認爲的onStop()是當按下home鍵調用(或應用程序在關閉被稱爲你說任何其他方式),因此,如果我改變一個布爾值,爲假時的onStop被調用,檢查布爾中的onResume當應用程序被重新打開,我就可以告訴的onResume執行一些代碼或不 –

+0

庵。 ..不是真的。如果你的活動開始另一個活動,'onStop()'也會被調用。所以我真的不明白這對你有什麼幫助。 –

1

感謝大家的幫助

我設法通過創建一個布爾值,executeOnResume,這是我作出虛假每次的onStop()被調用,應用程序被關閉,以解決此問題。然後,我再次打開應用程序時,檢查onResume()中此布爾值的狀態,以選擇是否應執行某些代碼。

的onStop()

//-----application stopped 
    @Override 
    protected void onStop() { 
     super.onStop(); 

     //do not execute onResume code when app opened again 
     executeOnResume = false; 
    } 



的onResume()

//-----application resumed 
    @Override 
    protected void onResume() { 
     super.onResume(); 

     //if true 
     if (executeOnResume) { 

      //do something 
     } 

     else { 

      //execute onResume true code the next time onResume is called. For example, returning from another activity 

     } 
    } 
相關問題