【发布时间】:2017-10-05 11:33:19
【问题描述】:
背景信息
所以我创建了一个主要由服务支持的通知控制的应用程序。当用户失去与特定 WiFi 网络的连接时,此通知会消失,并且必须在用户回家并连接到 Wifi 网络时出现。在 Android O 之前,我只是让服务在后台运行。该服务绑定到一个广播接收器,该接收器会在 WiFi 连接和断开连接时通知该服务。然后该服务将对这些更改采取行动。
重大变化
现在我们有了具有背景限制的 Android Oreo。因此,为了节省一些电量,我更改了应用程序以在 WiFi 断开连接时停止服务,并启动 Firebase Jobdispatcher 作业。只要 Android 愿意,就会执行此作业。所以很可能是用户连接到 WiFi,15 分钟后作业被执行。
问题
我希望在手机连接到 WiFi 网络时立即执行该作业,而无需运行任何服务。我知道这是可能的,因为我最近在 Google 翻译 Android 应用程序中看到了这种完全相同的行为。当您启用一种语言进行离线翻译时,只有在连接 WiFi 时才会下载它。即使我关闭了它的所有服务(在开发者选项中),它也会在我连接到 WiFi 时立即做出反应。
有什么想法吗?
对于任何感兴趣的人,这是我的工作配置:
Job myJob = mDispatcher.newJobBuilder()
.setService(ScheduledJobService.class)
.setTag(JOB_TAG)
.setRecurring(true)
.setTrigger(Trigger.executionWindow(1, 10))
.setLifetime(Lifetime.UNTIL_NEXT_BOOT)
.setReplaceCurrent(true)
.setConstraints(Constraint.ON_UNMETERED_NETWORK)
.setRetryStrategy(RetryStrategy.DEFAULT_LINEAR)
.build();
mDispatcher.mustSchedule(myJob);
【问题讨论】:
-
有人有答案吗?
标签: android triggers wifi jobs firebase-job-dispatcher