我有点不确定FirebaseJobDispatcher
(JobsCheduler(应该如何工作。当用户失去Internet连接时,我想要的是什么,然后再次获得连接性,让我的应用程序运行并进行同步以检查连接时的内容更新。
我知道我们不应该使用连接性更改广播听众并使用JobsCheduler,但是似乎JobsCheduler更像是一个更聪明的AlarmManager,即使没有连接性更改(我不需要(也将运行它。
是这种情况,还是我误解了它是如何工作的?如果没有,只有在用户重新获得Internet连接时才会发射的东西?
JobsCheduler是一个不错的选择,当您想触发某些前提条件(连接,电池和系统广播(时发生的某些动作时。在您的情况下,时间安排了一些仅在用户具有Internet连接时发生的工作。
您可以使用JobsCheduler 最小API 21,而Google Play服务不需要。FirebaseJobDisPatcher 最低API 9和播放服务是必需的。
此外,AndroidJob是一个具有最小API 14的库,并且不需要Play Service 。
此视频可以帮助通过FirebaseJobdisPatcher澄清一些疑问,此外,Evernote的这篇文章是很好的资源。
以下代码将以简单的单词或数据网络触发任何网络
Job myJob = mDispatcher.newJobBuilder()
.setService(MyJobService.class)
.setTag(JOB_TAG)
.setRecurring(true)
.setTrigger(Trigger.executionWindow(5, 5))
.setLifetime(Lifetime.FOREVER)
.setConstraints(Constraint.ON_ANY_NETWORK)
.setReplaceCurrent(false)
.setRetryStrategy(RetryStrategy.DEFAULT_EXPONENTIAL)
.build();
mDispatcher.schedule(myJob);
更改为.setConstraints(constraint.on_unmetered_network(它将仅在WiFi网络中使用。
删除即使没有网络
JobDisPatcher的TestApp提供了一个很好的示例;虽然普通,但可以使用建筑商为调度员创建作业。刚刚在这里找到了这个答案,该答案更详细地解释了。
/* a recurring job, being triggered in the time-frame in between 59-61 seconds */
Job.Builder builder = dispatcher
.newJobBuilder()
.setTag("SomeJob")
.setService(SomeJobService.class)
.setRecurring(true)
.setTrigger(Trigger.executionWindow(59, 61));