对在AlarmManager上使用WorkManager感到困惑

cor*_*her 5 android alarmmanager android-workmanager

我必须执行此用例(不是代码,只是正确的用法) 用例:我需要每天在00:30从网络中获取一些数据。这些数据为我提供了一些特定的时间,其中之一大约是4:30(每天以+1分钟-1分钟的时间变化,取决于服务器的响应,不能在任何地方使用++或-逻辑)。在这一点(4:30),我需要安排一个Alarm。尚不清楚:

我应该直接使用AlarmManager吗?

我应该使用WorkManager来获取需要报警的时间,而不是使用AlarmManager吗?

我应该只使用WorkManager吗?

我感到困惑的原因是,我读过的一些博客说,如果我在特定时间做一些工作,最好坚持使用AlarmManager,但仍然可以使用WorkManager来做到这一点。

那怎么办呢?

小智 7

我应该直接使用AlarmManager吗?

是的你应该。就我所知,AlarmManager是处理像您这样的任务的最佳选择,也是处理打ze模式时更安全的选择。使用第一个警报可以在特定时间设置第二个警报。

我应该使用WorkManager来获取需要报警的时间,而不是使用AlarmManager吗?

如果要使用此方法,则需要调用AlarmManager并在WorkManager上调度Worker。WorkManager需要在特定时间之前运行,并且不能保证Worker完成或将在4.30之前执行。

我感到困惑的原因是,我读过的一些博客说,如果我在特定时间做一些工作,最好坚持使用AlarmManager,但仍然可以使用WorkManager来做到这一点。

WorkManager不保证执行时间。它将来可能会这样做。

我应该只使用WorkManager吗?

否,出于之前提到的原因。 如果您想使用工作计划程序,Android-Job是您的用例的短期响应。如果您转到该链接,还可以看到功能和差异表。

  • 我已正确传递所有参数。我正在 7.1 上测试它,问题是打瞌睡模式。当应用程序被终止时,我的应用程序不会触发警报。 (3认同)
  • `WorkManager` 位于几个 api 之上,其中之一是 `AlarmManager`,为什么 `WorkManager` 位于 `AlarmManager` 之上还不够? (2认同)