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

问题描述 投票:0回答:1

我正在尝试在一天中的特定时间(上午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);
android broadcastreceiver alarmmanager alarm
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.