簡體   English   中英

在android中找到正在運行的服務

[英]find running services in android

這是我搜索服務的方法

public static boolean isServiceRunning(String serviceClassName, Context context) {
        ActivityManager activityManager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
        if (activityManager == null) {
            return false;
        }

        List<RunningServiceInfo> services = activityManager.getRunningServices(Integer.MAX_VALUE);
        if (services.isEmpty()) {
            return false;
        }

        for (RunningServiceInfo runningServiceInfo : services) {
            if (runningServiceInfo.service.getClassName().equals(serviceClassName)) {
                return true;
            }
        }

        return false;
    }

但有時我會收到此錯誤:

java.lang.RuntimeException: Unable to instantiate receiver com.xx.xx.receiver.BluetoothReceiver: java.lang.ClassNotFoundException: com.xx.xx.receiver.BluetoothReceiver
01-06 17:39:38.990: E/AndroidRuntime(7259):     at android.app.ActivityThread.handleReceiver(ActivityThread.java:2111)
01-06 17:39:38.990: E/AndroidRuntime(7259):     at android.app.ActivityThread.access$1500(ActivityThread.java:127)
01-06 17:39:38.990: E/AndroidRuntime(7259):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1208)
01-06 17:39:38.990: E/AndroidRuntime(7259):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-06 17:39:38.990: E/AndroidRuntime(7259):     at android.os.Looper.loop(Looper.java:137)
01-06 17:39:38.990: E/AndroidRuntime(7259):     at android.app.ActivityThread.main(ActivityThread.java:4511)
01-06 17:39:38.990: E/AndroidRuntime(7259):     at java.lang.reflect.Method.invokeNative(Native Method)
01-06 17:39:38.990: E/AndroidRuntime(7259):     at java.lang.reflect.Method.invoke(Method.java:511)
01-06 17:39:38.990: E/AndroidRuntime(7259):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:980)
01-06 17:39:38.990: E/AndroidRuntime(7259):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747)
01-06 17:39:38.990: E/AndroidRuntime(7259):     at dalvik.system.NativeStart.main(Native Method)
01-06 17:39:38.990: E/AndroidRuntime(7259): Caused by: java.lang.ClassNotFoundException: com.xx.x.receiver.BluetoothReceiver
01-06 17:39:38.990: E/AndroidRuntime(7259):     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
01-06 17:39:38.990: E/AndroidRuntime(7259):     at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
01-06 17:39:38.990: E/AndroidRuntime(7259):     at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
01-06 17:39:38.990: E/AndroidRuntime(7259):     at android.app.ActivityThread.handleReceiver(ActivityThread.java:2106)

使用這種方法是否明智? 我想查找服務是否正在運行。 如果沒有,我手動運行它。

但有時我會收到此錯誤:

該錯誤似乎與您顯示的代碼無關。

我想查找服務是否正在運行。 如果沒有,我手動運行它。

只需啟動服務。 如果它已經在運行,則不會發生任何事情,只不過將再次使用onStartCommand()對其進行調用。 如果尚未運行,則將創建該服務的實例,使用onCreate()進行調用,然后使用onStartCommand()進行調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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