簡體   English   中英

檢查服務是否在Android中運行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM