저 같은 경우에는 서비스에서 60초마다 방송을 보내고,
앱에서 방송을 수신하면 1초 후에 서비스를 중단하고 다시 시작하는 식으로 안꺼지게 했어요.
강제로 앱을 종료하면 정식으로 방송을 보냈던 것 때문에 60초 뒤에 다시 시작하고 그렇더라구요.
public void registerRestartAlarm(boolean isOn) {
Intent intent = new Intent(LockScreenService.this,
RestartReceiver.class);
intent.setAction(RestartReceiver.ACTION_RESTART_SERVICE);
PendingIntent sender = PendingIntent.getBroadcast(
getApplicationContext(), 0, intent, 0);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
if (isOn) {
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + 60 * 1000, 60 * 1000, sender);
} else {
am.cancel(sender);
sender = null;
am = null;
}
}
public class RestartReceiver extends BroadcastReceiver {
static public final String ACTION_RESTART_SERVICE = "RestartReceiver.restart";
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(ACTION_RESTART_SERVICE)) {
Intent i = new Intent(context, LockScreenService.class);
context.startService(i);
}
}
}
이런식으로.