GcmNetworkManager一次性任务执行窗口是否必需?

5
我开始使用 GcmNetworkManager 来在用户恢复网络连接时触发同步。
当查看 OneoffTask 的文档时,它说必须使用 setExecutionWindow 方法。

创建一次性任务的强制设置器

然而,我只希望在用户有网络连接时执行此操作,但听起来它可能会在没有网络连接的情况下,在 windowStartDelaySecondswindowEndDelaySeconds 的时间窗口内执行。
那么这是否意味着网络管理器可能会在 windowEndDelaySeconds 之前的某个时刻执行该任务,还是说一旦恢复了网络连接,它就会在那段时间内执行?

setRequiredNetwork()的文档说明:“如果指定的网络不可用,您的任务将不会执行,直到它变为可用。”,因此我认为它不会执行。我的问题是,如果在windowEndDelaySeconds之后才获得网络,任务是否仍会执行?你总是可以将其设置为一个足够遥远的时间,以便它无关紧要,但我仍然很想知道,因为我预计它可能不会执行。 - George Mulligan
1个回答

0

这意味着CGM将在注册后的windowStartDelaySecondswindowEndDelaySeconds之间的某个时间尝试执行,但也要考虑指定的网络状态。

例如,如果您使用.setExecutionWindow(30, 40)并使用.setRequiredNetwork(Task.NETWORK_STATE_CONNECTED),那么这意味着任务将仅在连接到网络时在注册后的30秒到40秒之间的某个时间执行。

因此,是的,它可以在windowEndDelaySeconds之前执行,但这也取决于网络状态。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接