[英]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 可以调整触发时间以节省电池(通常通过延迟触发直到设备唤醒)。 阅读有关AlarmManager
和JobScheduler
以及如何为您的应用程序获取所需行为的文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.