繁体   English   中英

广播接收器的触发时间比应有的时间晚

[英]Broadcast receiver fires late than it should be

我试图在一天中的特定时间(即凌晨 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);

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM