我必須在 android 系統中放 service
以便在背景中執行程式
但是我要如何知道這個 service 已經在系統中執行了呢??
起初我覺得在 service 裡面埋一個 public static boolean
然後在 onCreate 或 onStartCommand 的時候設為 true
在 onDestroy 時設為 false
應該就可以解決
可是事情沒有這麼簡單
為此花了點時間上網找答案
由於 android 本身沒有提供這樣的方法
所以大家提供的解法也不大一致
最後終於找到一個可行方法
先來看 code
public static boolean isServiceRunning(Context context, String serviceClassName){ final ActivityManager activityManager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE); final List< Runningserviceinfo > services = activityManager.getRunningServices(Integer.MAX_VALUE); for (RunningServiceInfo runningServiceInfo : services) { if (runningServiceInfo.service.getClassName().equals(serviceClassName)){ return true; } } return false; }這是利用 service 的 class name 去與目前正在執行的 service 進行比對的方式
來判斷這個 service 是否已經在執行
在這裡做個筆記也提供給路過的人參考一下嚕
相關資料:
參考來源-1
參考來源-2
參考來源-3
沒有留言:
張貼留言