Android重复警报不工作
这很好:Android重复警报不工作,android,repeat,alarm,Android,Repeat,Alarm,这很好: Intent intent = new Intent(HelloAndroid2.this, AlarmReceiver.class); PendingIntent pendingIntent = PendingIntent.getBroadcast(HelloAndroid2.this, 0, intent, PendingIntent.FLAG_ONE_SHOT); AlarmManager alarmManager = (AlarmManager) g
Intent intent = new Intent(HelloAndroid2.this, AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(HelloAndroid2.this, 0,
intent, PendingIntent.FLAG_ONE_SHOT);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (12 * 1000), pendingIntent);
这不管用。我只听到闹钟响了一次
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (12 * 1000), 3 * 1000, pendingIntent);
我也试过这个,运气不好:
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 5);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 7000, pendingIntent);
问题出在哪里?来自单发标志:
这个吊坠可以
只能使用一次。如果设置,则在
如果对其调用send(),则
自动为您和任何人取消
将来尝试通过它发送将
失败
因此,在第一次启动PendingEvent后,它将被取消,并且下一次通过alarm manager发送它的尝试将失败
尝试使用FLAG_UPDATE_CURRENT按顺序查看代码示例: 在您的第一个示例中,您使用的是AlarmManager.set-这严格适用于一次性警报,因此是的,它只会触发一次。如果要使用AlarmManager.set,则触发的代码应做的最后一件事是设置新的报警(也应使用新的PendingEvent) 在第二个示例中,您使用的是重复报警。您不需要每次触发时创建一个新的PendingEvent,因为操作系统会处理警报的重复部分 没有理由不让您的警报每3秒重复一次,因此我将开始查看您为处理警报而编写的BroadcastReceiver实现 检查您是否正确地实现了它。注释掉onReceive()方法中的所有代码,让它编写一条日志消息。每次报警触发时,当您看到日志消息出现在logcat中时,将代码添加回(保留日志消息),并在方法末尾添加另一条日志消息。这允许您查看该方法执行所需的时间-您希望它在警报再次触发之前完成,以避免任何意外的副作用
另一方面,如果您想要重复报警,尽管通过AlarmManager设置的报警会非常准确地触发,但android.os.Handler是一种更有效的方法。这非常简单。非常感谢。