在我的Android应用程序中,我有两个应该及时运行的服务。 一个将在固定日期运行,另一个将在每天晚上11:00运行。
为实现这一目标,我创建了服务并使用Alarm Manager在固定时间启动它们。
private void scheduleAlarmForCleanup(){
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 30);
calendar.set(Calendar.SECOND, 00);
Intent pendingIntent = new Intent(this, CleanupService.class);
PendingIntent pintent = PendingIntent.getService(this, 0, pendingIntent, 0);
AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24*60*60*1000 , pintent);
}
现在我在我的Activity的onCreate中调用了这个函数。 但onCreate可以在一天内被多次调用 而我担心这会导致多次调用此函数。
这会产生什么影响? 警报会多次设置。 有没有办法可以检查我的警报是否已经设定,在这种情况下我不会再尝试设置警报。
答案 0 :(得分:0)
每次都必须尝试取消闹钟并重新设置。
try
{
// This block will cancel the alarm if already available. Else throw an
// exception which will be ignored
alarmManager.cancel(pintent);
}catch (Exception ignored){ }
// After try block, set the manager again.
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24*60*60*1000 , pintent);