2017-08-22 72 views
-1

我正在製作一個簡單的音樂應用程序。
我現在面臨的問題是如何檢查id服務已經運行或沒有?如何在android中使用服務?

最後一次當我沒有服務的音樂應用程序,它很好,但有一個問題。每當我播放音樂,然後退出並退出應用程序,現在再次打開應用程序後,當我再次播放音樂時,它開始播放另一首歌曲,但第一首歌曲仍在播放,所以每當我關閉並打開應用程序並播放音樂時,它就開始播放歌曲但所有其他歌曲也在同一時間播放。

所以通過使用服務,我希望通過使用綁定服務來刪除這個。 我只想知道當我打開和關閉應用程序時,應用程序是否也會從其自身中刪除服務的實例,如果是,我怎麼能知道該服務已經運行並且不再綁定它?

+1

請參閱https://developer.android.com/reference/android/app/Service.html示例 –

回答

0

使用從活動中的以下內容:

private boolean isMyServiceRunning(Class<?> serviceClass) { 
    ActivityManager manager = (ActivityManager) 
getSystemService(Context.ACTIVITY_SERVICE); 
    for (RunningServiceInfo service : 
manager.getRunningServices(Integer.MAX_VALUE)) { 
     if (serviceClass.getName().equals(service.service.getClassName())) { 
      return true; 
     } 
    } 
    return false; 
} 

而且我把它用:

isMyServiceRunning(MyService.class) 

這個工作可靠,因爲它是基於對運行的是Android提供的服務信息操作系統通過ActivityManager#getRunningServices。

所有使用onDestroy或onSometing事件或綁定器或靜態變量的方法都無法可靠地工作,因爲作爲一名開發人員,您永遠不會知道,Android何時決定殺死您的進程或是否調用了上述回調函數。請注意Android文檔生命週期事件表中的「killable」列。