2014-03-28 72 views
1

如何停止在後臺運行的服務。 有沒有辦法使用後退和首頁按鈕按KeyCode,KeyEvent不工作

我試圖做到這一點使用關鍵事件,但它仍然不工作。在這裏,你可以檢查我的代碼如下...

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

} 

請幫我這個或建議我其他選項來停止服務?

+0

這些密鑰由Android OS處理。但是你可以使用反射來使用它。見http://stackoverflow.com/a/31872330/3496570 – Nepster

回答

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

     switch(keyCode) 
     { 
     case KeyEvent.KEYCODE_HOME: 
     stopBackgroundAudio();// background services 
      return true; 
     case KeyEvent.KEYCODE_BACK: 
     stopBackgroundAudio(); 
      return true; 
     case KeyEvent.KEYCODE_MENU: 
     stopBackgroundAudio(); 
      return true; 


     } 

     return super.onKeyDown(keyCode, event); 
    } 

我不知道你的服務是綁定或解除綁定的服務,如果是取消綁定服務比它可能是一個問題,並且如果它是不是有一個正確執行綁定服務!

+0

不工作家和菜單 – SourabhTech

+0

嘿嘿使用返回super.onKeyDown(keyCode,事件);代替回報虛假;答案已更新 –

+0

不工作.... – SourabhTech

1

返回和家庭不使用該API。後退鍵通過backButtonPressed功能進入,您可以覆蓋。主頁按鈕不會出現 - 您的應用程序只會被推到背景。

此外,如果您希望音頻在放入背景時停止,請停止在onPause中。

+0

這不會解決問題,因爲在從一個活動移動到另一個活動時也調用onPause – TheMohanAhuja

+0

是的,但他沒有指定他需要這個。 –

+0

對我的朋友,但他明確指出,他只想在家庭媒體或後退按鈕上停止服務。 – TheMohanAhuja

相關問題