[英]Check if service is running in Android
我正在編寫一項服務,該服務檢查特定服務是否正在運行。 我每秒使用警報管理器調用checkService.class。 (這很好)
在checkService.class中,我有以下代碼:
private boolean isMyServiceRunning()
{
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE))
{
if (PhoneListnerService.class.getName().equals(service.service.getClassName()))
{
return true;
}
}
return false;
}
當它返回true時,我什么也不做。 如果為false,則啟動服務PhoneListnerService.class。 第一次,此過程運行良好,但是如果我使用一些taskKiller應用程序殺死了整個應用程序-“ isMyserviceRunning”仍然顯示true 。
我相信taskKiller會殺死所有服務,BroadCastreceivers等-如果是這樣,它怎么會顯示True而不是False ?
有人可以幫我嗎?
謝謝!
也許android並未停止服務。 殺戮服務具有不確定的行為。 另一方面,您不必在啟動服務之前檢查服務是否正在運行。 您可以使用該警報來啟動服務。 如果服務已經在運行,則不會調用onCreate
,而會調用onStartCommand
。 您可以做的是從警報啟動服務時將一個變量放入意圖中,在onStartCommand
檢查該變量,並使用一些簡單的邏輯找出要執行的操作。
@TheDevMan可能是對還是錯,但是最主要的是您在這里使用警報管理器,因此當您終止服務時,alarmmanager會在一秒鍾之內重新啟動它。 所以它返回true。檢查它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.