androidでサービスが実行中かどうかを判定する方法
Androidではサービスが稼働中かどうかを以下の方法で判定できます:
- ActivityManagerを使用して現在実行中のサービス一覧を取得し、一覧を反復処理して対象のサービスが含まれているかどうかを判断する。
ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningServiceInfo> runningServices = activityManager.getRunningServices(Integer.MAX_VALUE);
for (ActivityManager.RunningServiceInfo serviceInfo : runningServices) {
if (serviceInfo.service.getClassName().equals(YourService.class.getName())) {
// 服务正在运行
break;
}
}
- ContextのgetSystemServiceメソッドとサービスのクラス名からサービスの状態を取得する。
ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningServiceInfo serviceInfo : activityManager.getRunningServices(Integer.MAX_VALUE)) {
if (YourService.class.getName().equals(serviceInfo.service.getClassName())) {
// 服务正在运行
break;
}
}
- サービスの実行状態を保持するグローバル変数をサービス内に使用する。
public class YourService extends Service {
private static boolean isRunning = false;
@Override
public void onCreate() {
super.onCreate();
isRunning = true;
}
@Override
public void onDestroy() {
super.onDestroy();
isRunning = false;
}
public static boolean isRunning() {
return isRunning;
}
}
その後、他の場所で YourService.isRunning() メソッドを呼び出してサービスを実行中かどうかを判断します。