避免反复设置相同的警报

时间:2014-08-22 07:38:43

标签: android alarmmanager alarm

在我的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可以在一天内被多次调用 而我担心这会导致多次调用此函数。

这会产生什么影响? 警报会多次设置。 有没有办法可以检查我的警报是否已经设定,在这种情况下我不会再尝试设置警报。

1 个答案:

答案 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);