我必须执行此用例(不是代码,只是正确的用法)用例:我每天需要在00:30从网络中获取一些数据。这些数据为我提供了一些特定的时间,其中之一大约是4:30(每天以+1分钟-1分钟的时间变化,取决于服务器的响应,不能在任何地方使用++或-逻辑)。在这一点(4:30),我需要安排一个Alarm。什么还不清楚:
我应该直接为此使用AlarmManager吗?
我应该使用WorkManager来获取需要报警的时间,而不是使用AlarmManager吗?
我应该只使用WorkManager吗?
之所以感到困惑,是因为我读过的一些博客说,如果我在特定时间有一些工作,最好还是坚持使用AlarmManager,但仍然可以使用WorkManager做到这一点
那么如何完成?
我应该直接使用AlarmManager吗?
是的,你应该。就我所知,AlarmManager是处理像您这样的任务的最佳选择,也是处理doze mode时更安全的选择。使用第一个警报可以在特定时间设置第二个警报。
我应该使用WorkManager来获取我需要报警的时间,而不是使用AlarmManager的时间吗?
如果要使用此方法,则需要调用AlarmManager并在WorkManager上调度Worker。 WorkManager需要在特定时间之前运行,并且不能保证Worker完成或将在4.30之前执行。
之所以感到困惑,是因为我读过的一些博客说,如果我在特定时间有一些工作,最好还是坚持使用AlarmManager,但仍然可以使用WorkManager做到这一点
WorkManager不保证执行时间。将来可能会这样做。
我应该只使用WorkManager吗?
不,出于之前所述的原因。Android-Job是您要使用工作计划程序的用例的短期响应。如果您转到链接,也可以看到功能和差异表。
编辑17/03/2020:Android-Job已弃用。