【发布时间】:2014-03-23 16:18:43
【问题描述】:
我对@987654322@ 和BroadcastReceiver 有疑问!
我想使用 AlarmManager 每 15 分钟更新一次数据(代码中不是这种情况,因为我仍在尝试使功能正常工作)但发生了一些我不太了解的事情.
每次定时器调用onReceive方法时,它会被快速调用3-5次,LogCat消息被写入3-5次。我的代码有问题吗?
代码:
MainActivity 类中的方法:
private void setCloseByChecker() {
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
Calendar cal=Calendar.getInstance();
Intent intent = new Intent(this, CloseByReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(
this.getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
cal.getTimeInMillis() + 15000, 15000, pendingIntent);
}
还有BroadcastReceiver 类:
@Override
public void onReceive(Context context, Intent intent) {
Log.i("hello","hello");
}
【问题讨论】:
-
时间以毫秒为单位,15000 毫秒实际上是 15 秒。
-
是的,我知道,我现在用 15 秒来测试它。但是每次计时器命中时,onReceive 方法都会被快速调用 3-5 次。
-
也许您正在注册该广播作为多个实例?
-
尝试如下设置你的闹钟,
onReceive不会被多次调用。alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 15000, 15000, pendingIntent);
标签: java android broadcastreceiver alarmmanager