Android

【Android】サービスが実行中かチェックしてから起動する

無駄にサービスのインスタンスを増やしたくなかったので、実行中かチェックしてから起動する。
minSdkVersion 23
targetSdkVersion 23
で確認しました。

import android.app.ActivityManager;
...

ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningServiceInfo serviceInfo : manager.getRunningServices(Integer.MAX_VALUE)) {
    if (HogeService.class.getName().equals(serviceInfo.service.getClassName())) {
        // 実行中なら起動しない
        return;
    }
}
Intent intent = new Intent(getApplication(), HogeService.class);
startService(intent);