2014-12-13 96 views
1

我爲我的應用程序提供前臺服務,該服務必須運行整個時間並且永不停止。雖然我測試了幾次,但在3-4天后,Android決定停止它,並且再也不會重新啓動它,並且在我的活動中,如果服務正在運行,並且它沒有啓動它。 即使服務沒有啓動,我也無法調試它,因爲這不是偶然發生的。 這是我的支票,有沒有錯嗎?由Android停止的前臺服務以後不會重新啓動

if (!isMyServiceRunning(MyService.class)) { 
     startService(new Intent(this, MyService.class)); 
} 

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; 
} 

我所說的活動)中的onResume此檢查(和活動開始時,我不能只是運行它每次,因爲我有一個不斷運行的線程的服務,這將讓不止一個例如,如果多次啓動...

所以這裏就是我想: 要麼有更可靠的方式來檢查的服務,如果其運行 或 只需啓動該服務每次活動開始時間,防止出現問題,並且它內部的線程必須總是隻有一個實例(我已經聲明爲靜態)

回答

1

Activity開始/恢復時,您可以使您的服務Bindable和綁定您的Activity到服務。這樣你就可以確定服務正在運行。但我認爲你的服務有問題。我希望您發佈有關該服務的更多信息?操作系統無法正常殺死沒有痕跡的前臺服務。

+0

你需要知道什麼? – 2014-12-13 09:30:21

+0

你可以粘貼啓動服務的代碼嗎? – 2014-12-13 09:30:57

+0

你的意思是onStartCommand方法嗎? – 2014-12-13 09:38:10

相關問題