それでは、実行中のすべてのサービスをリストし、私が関心のあるサービスに名前を一致させることができることに気付きました。そして、実行している場合、別のサービスを開始しようとしません。
protected static boolean isMyServiceRunning(Class<?> serviceClass, Context cont) {
ActivityManager manager = (ActivityManager) cont.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningServiceInfo> list = manager
.getRunningServices(Integer.MAX_VALUE);
if (list == null || list.isEmpty()) {
return true;
}
for (ActivityManager.RunningServiceInfo service : list) {
if (serviceClass.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}
サービスが実行されていると、メソッドはtrueを返します。また、getRunningServiceInfo(x)を使用して、特定の量のサービスのみをリストすることもできます。