【问题标题】:Broadcast receiver fires late than it should be广播接收器的触发时间比应有的时间晚
【发布时间】:2019-11-11 23:29:39
【问题描述】:

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

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

【讨论】:

    猜你喜欢
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多