Android判斷service是否在執行!
阿新 • • 發佈:2019-01-30
Android 中判斷某一指定的服務是否有在執行中,這裡使用ActivityManager例項來檢索正在執行的任務例項,獲取其元件名稱,然後通過與指定service的元件名稱進行比對。。。
程式碼如下:
/**
* @params componentName 查詢指定service的元件名;
* e.g. com.hr.life.trnfa.service.services.MqttConnectService
*
* @return boolean 返回該服務是否在執行中;
*/
private boolean serverIsRunning (String componentName) {
ActivityManager activityManager = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningServiceInfo> runningServices
= activityManager.getRunningServices(Integer.MAX_VALUE);
if (runningServices.size() <= 0 ) {
return false;
}
for (ActivityManager.RunningServiceInfo serviceInfo : runningServices) {
if (componentName.equals(serviceInfo.service.getClassName())) {
return true;
}
}
return false;
}
Notes : 注意activityManager.getRunningServices(int maxNum),該方法這裡使用的是Integer.MAX_VALUE最大值,如果應用較多相關的service也會很多,如果固定值可能存在沒有列出的情況;