2011-07-02 101 views
1

我想,如果用戶按下home鍵我的服務將被停止,這是我的代碼,但它不是爲我工作,請大家幫幫我:按Home鍵停止服務

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
if (keyCode == KeyEvent.KEYCODE_HOME) { 
stopService(new Intent(this, MyService.class)); 
return true; 
} 
return super.onKeyDown(keyCode, event); 
} 

感謝

+1

能anyboady幫幫我好嗎? –

回答

4

如果你想確保該服務僅運行時的相關活動是可見的,更好的解決方案將是任何活動的用戶的的onPause()方法來停止服務在跑。這樣,當用戶按下「後退」以及當用戶按下「家」時,該事件被處理。

同樣,您可以將您的服務綁定到活動(或活動)。當綁定的所有活動停止時,綁定服務將被銷燬。

+0

在這種情況下,甚至不需要服務......使用AsyncTask可能就足夠了。 – mibollma

+1

謝謝,它工作正常。 –

+0

對於這個特定情況(從我收集的內容),服務不是必需的。計時器,asynctask或通用線程可能就足夠了。但是,如果服務已經實現(可能來自另一個應用程序或將用作另一個應用程序中的服務),那麼這是一個很好的解決方案。此外,要回答「我可以訪問並覆蓋主頁按鈕?」這個問題:答案是我收集的「否」。它只是意味着強制退出一個程序,所以重寫它可能是危險的。 – DeeV

3

公共靜態最終詮釋KEYCODE_HOME

這個密鑰是由 框架處理,並沒有交付給應用程序

Source

+1

那麼我該怎麼做呢? –

+0

用戶不直接與服務交互。您可以使用通知,但它高度依賴於您的應用程序的功能。 – mibollma

+0

我認爲他只是試圖確保服務停止時,他的活動是不可見的。在這種情況下,使用主鍵不是最好的方法。 – DeeV

0

使根系活力和添加此,

@Override 
    public void onTrimMemory(int level) { 
     super.onTrimMemory(level); 
     if (level == ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN) { 
      // Get called every-time when application went to background. 
      System.exit(0); 
     } 

    } 

延長與rootActivity每一項活動,它會在主頁/菜單按鈕按下關機服務