【发布时间】:2016-09-03 19:04:42
【问题描述】:
我只是在玩JobScheduler,还有一些小问题。
其中之一是,虽然您可以使用 setMinimumLatency() 延迟作业,但您不能将其与 setPeriodic() 结合使用,因为会引发异常。
我真的不明白为什么会这样......延迟开始定期工作似乎是合理的,就像延迟开始一次性工作是合理的一样。
鉴于您不能,使用JobScheduler 安排未来开始的定期作业(即使在重新启动后)的最佳方式是什么?
【问题讨论】:
-
“为什么不合理...”——“为什么开发者 X 做 Y 事”问题对于 Stack Overflow 来说并不是很好,因为只有开发者 X 可以权威地回答这个问题。 “什么是最好的方法......” - 即兴发挥,要么立即安排工作,让您的工作服务跳过尚未完成的工作,要么使用
AlarmManager在您想要的时间获得控制权要开始的工作。 -
好吧,我已经用
AlarmManager一切正常,但我认为JobScheduler是推荐的前进方式。我正在考虑使用JobScheduler的主要原因是因为在Android N 中不再可能在我的AppWidgetProvider中侦听CONNECTIVITY_CHANGE。所以我将从AlarmManager解决方案与连接侦听螺栓固定到JobScheduler(连接监听)解决方案,带有...AlarmManager螺栓固定。嘿嘿。 -
P.S. “为什么不合理”的问题是修辞性的……我已将其改写为陈述。
-
“我认为 JobScheduler 是推荐的前进方式”——嗯,对于某类工作来说确实如此。它不会解决所有可能的工作类别。例如,您不会将它用于闹钟或日历提醒。您计划的用例恰好与任何单个 API 不一致。
-
是的,我正在使用
AlarmManager来安排定期小部件刷新(比普通的AppWidgetProvider方法所允许的灵活性更大,包括在丢失刷新时恢复连接后刷新)。这一切都很好......但现在他们已经拿走了CONNECTIVITY_CHANGE:-(也许我需要保持我的AlarmManager框架完好无损,只需在每次刷新警报时安排一个JobService(以获取连接监听)而不是而不是像现在一样直接开始Service。
标签: android android-jobscheduler