2012-12-07 25 views
1

我的android應用程序是一個客戶端,當有人點擊主頁按鈕時,我想發送一條消息到服務器,當用戶更改回應用程序時,我也想發送一條消息給服務器。如果我可以覆蓋HOME按鈕keyEvent或任何將被調用的方法只有當應用程序將被置於後臺時,我可以發送消息並設置一個靜態變量在一個單獨的onStart()將被檢查,所以基本上我只需要以某種方式「覆蓋」HOME按鈕。 我試過如下:主頁按鈕前的方法

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

它根本不起作用。我在其中放置了一個斷點,但HOME按鈕根本不會觸發此方法。 (三星Galaxy Ace,android 2.2.1)。

我也試圖overrite的onUserLeaveHint()這樣的:

@Override 
protected void onUserLeaveHint() { 
    //... 
    super.onUserLeaveHint(); 
} 

但問題是,這種方法被稱爲不僅當我按下HOME鍵或應用程序被中斷,但是當我剛導航到其他活動(並完成當前活動)。 有沒有解決這個問題的方法?

+0

嘗試重寫您MainActivity的的onPause()。 – Pavlos

回答

4

可能想看看這個Android Docs

您正在尋找的onPause /的onResume,基於該行

或任何方法,將只調用的時候,應用程序將是 放到後臺

該文檔應解釋如何堆棧的工作,這將允許你來完成這個問題。

+1

onPause的問題,這將被稱爲,當我只是簡單地改變活動(並完成當前),不僅當應用程序去背景。如何區分這兩種情況? –

+0

不幸的是,Android沒有像iOS那樣的applicationDidEnterBackground。國際海事組織,你最好跟蹤你的活動活動狀態,以確定它是否進入後臺或進入新的活動。關於這個問題有很多話題,有很多不同的想法。我建議四處尋找最適合你的東西。 – AJak

+0

感謝答案,至少我不會嘗試找到不存在的東西。 –

1

這個問題沒有一天的解決方案,因爲android不會讓你覆蓋主頁按鈕。最簡單的方法是在中使用代碼,但當然這可以在沒有按下主頁按鈕的情況下調用。

第二(不接受)答案here有一個有趣的解決方案,但我還沒有嘗試過,所以我不知道,如果它的工作原理

+0

不幸的是,它不適合我的手機,它有點不可預知。 –