標籤雲

搜尋此網誌

2012/07/24

在 android 中判斷 service 是否正在執行

這幾天碰到了一個問題
我必須在 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

沒有留言: