【问题标题】:cancelling and restarting alarm not working as intended取消和重新启动警报未按预期工作
【发布时间】:2014-07-10 11:07:00
【问题描述】:

我有一个 WakefulIntentService,它基本上以某个固定的时间间隔 ping 服务器以检查一些数据。

WakefulIntentService.scheduleAlarms(new PingWakefulListener(), this, false);

如果数据可用,我会取消警报

WakefulIntentService.cancelAlarms(getApplicationContext());

处理数据。

处理完成后,我会重新安排警报时间

WakefulIntentService.scheduleAlarms(new PingWakefulListener(), AcceptOrder.this, false);

我观察到的是,当 force(第三个参数)为 false 时,不会再次安排警报。因此,服务器不再 ping 通。

但是,如果我将force 设置为true,两个服务会同时运行。

安排和取消闹钟的正确方法是什么?

我发现,上次报警后经过的时间小于getMaxAge。所以警报没有再次安排。但是,取消警报应该可以清除它。

【问题讨论】:

    标签: android commonsware-cwac


    【解决方案1】:

    实际上,cancelAlarms() 看起来只是删除了AlarmManager 事件,并没有更新SharedPreferences。那是bug,我会在这个周末修复它。

    话虽如此,鉴于 Android 4.4+ 上新的不精确 AlarmManager 行为,我对 scheduleAlarms() 有点紧张。确保 getMaxAge() 返回足够大的值以考虑不精确性。

    【讨论】:

      猜你喜欢
      • 2020-09-10
      • 2017-05-13
      • 1970-01-01
      • 2018-08-03
      • 1970-01-01
      • 2015-12-20
      • 2019-06-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多