FirebaseJobDisPatcher在网络更改上运行



我有点不确定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));

相关内容

  • 没有找到相关文章

最新更新