重复警报称为甚至时间过去了

时间:2011-09-13 11:25:45

标签: android alarm

我创建了闹钟演示。在那个演示中,我重复一个警报。我的演示中有一个问题。即使时间过去,我的警报也称为服务。我正在设置16:08:00的时间并调用该警报,以便在经过该时间后调用我的警报服务。请帮我停止此标准。

 AlarmManager alarmManager = (AlarmManager)ctx.getSystemService(ctx.ALARM_SERVICE);
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.HOUR_OF_DAY, 16);
        calendar.set(Calendar.MINUTE, 8);
        calendar.set(Calendar.SECOND, 0);   
        PendingIntent pi = createPendingIntent(ctx);
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24*60*60*1000, pi);

CreatePendingIntent Method

private static PendingIntent createPendingIntent(Context context) 
    {
        Intent myIntent = new Intent(context, MyAlarmService.class);
        return PendingIntent.getService(context,0, myIntent, 0); 

    }

2 个答案:

答案 0 :(得分:6)

将警报设置为过去时间时,会立即弹出警报。 只需检查当前时间是否大于闹钟时间。如果是这样,请在闹钟时间内添加24小时并设置闹钟。

long timeToAlarm = calendar.getTimeInMillis();
if (calendar.getTimeInMillis() < System.currentTimeMillis())
{
    timeToAlarm += (24*60*60*1000);
}

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, timeToAlarm, 24*60*60*1000, pi);

答案 1 :(得分:0)

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24*60*60*1000, pi);

如果您使用上述代码,警报会在 24 * 60 * 60 * 1000 间隔时间重复。如果您不想重复警报,请使用以下代码

alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pi);

上述代码只会在一次报警。