广播接收器开火比应有的晚

时间:2019-11-09 04:55:14

标签: android broadcastreceiver alarmmanager alarm

我试图在一天中的特定时间(上午12点)触发接收器,但有时会在凌晨1点或凌晨2点触发。

我在服务中添加了一条通知,以了解接收器何时确切开始发出警报,然后我发现它开始于1点或2点甚至3点,而不是我调整的时间。

 calendar = Calendar.getInstance();
 calendar.setTimeInMillis(System.currentTimeMillis());
 calendar.set(Calendar.HOUR_OF_DAY,0);
 calendar.set(Calendar.MINUTE,0);
 calendar.set(Calendar.SECOND,0);

 Intent intent = new Intent(getActivity(), PrefAlarm.class);

 long firstMillis = System.currentTimeMillis(); 

 alarm = (AlarmManager)  getActivity().getSystemService(getActivity().ALARM_SERVICE);

  pIntent = PendingIntent.getBroadcast(getActivity(),  PrefAlarm.REQUEST_CODE2,intent ,PendingIntent.FLAG_CANCEL_CURRENT);

  alarm.setInexactRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis( ),AlarmManager.INTERVAL_DAY,pIntent);

1 个答案:

答案 0 :(得分:0)

如果您使用setInexactRepeating(),则其触发时间为 inexact 。这意味着Android可以调整触发时间以节省电池电量(通常通过延迟触发直到设备苏醒)。阅读有关AlarmManagerJobScheduler的文档,以及有关如何获取应用程序所需行为的文档。

相关问题