Я хочу, чтобы AlarmManager устанавливал будильник в 2 часа ночи ... Поэтому ниже setAlarm
вызывается только в первый раз, когда кто-то открывает приложения.Я добавил alarmManager.setRepeating
, чтобы это происходило ежедневно.
public class AlarmUtil {
public static void setAlarm(Context context) {
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
if (alarmManager != null) {
long start = System.currentTimeMillis();
Intent in = new Intent("ALARM_RECEIVER");
PendingIntent pi = PendingIntent.getBroadcast(context, 0, in, PendingIntent.FLAG_CANCEL_CURRENT);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.HOUR, 2);
calendar.set(Calendar.AM_PM, Calendar.AM);
DateFormat format = new SimpleDateFormat("MMMM dd , yyyy HH:mm:ss", Locale.ENGLISH);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi);
}
}
}
Нижеприведенный класс вызывается в 2 часа ночи независимо от того, активно приложение или нет.
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
context.startService(new Intent(context, AlarmService.class));
}
Но моя проблема в том, что вышеупомянутый AlarmReceiver вызывается каждые 30 секунд или происходит случайно, но происходит много раз, тогда как я хочу, чтобы он вызывался один раз в день.Я не понимаю, где я иду не так?