無駄にサービスのインスタンスを増やしたくなかったので、実行中かチェックしてから起動する。
minSdkVersion 23
targetSdkVersion 23
で確認しました。
HogeService.java
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);