【发布时间】:2017-07-14 00:14:59
【问题描述】:
他们是让 Evernote 的 android-job 在每天凌晨 1 点到 2 点之间运行作业的模式吗?
我认为在我的Application.onCreate 和Job.onRunJob 的末尾添加类似的东西可能是有意义的
// use the current time to see how long it will be until 1AM
long timeUntil1Am = getTimeUntil1Am(currentUnixTimeStamp);
new JobRequest.Builder(DemoSyncJob.TAG)
.setExecutionWindow(timeUntil1Am, timeUntil1Am + 3600_000L)
.setBackoffCriteria(5_000L, JobRequest.BackoffPolicy.EXPONENTIAL)
.setRequiresCharging(true)
.setRequiresDeviceIdle(false)
.setRequiredNetworkType(JobRequest.NetworkType.CONNECTED)
.setRequirementsEnforced(true)
.setPersisted(true)
.setUpdateCurrent(true)
.build()
.schedule();
这将在大约凌晨 1 点从应用程序创建时第一次运行该作业,然后使用 onRunJob 以菊花链方式连接下一次运行时间。
我认为这可行,但我担心该作业会被安排多次,因为每次构建 Application 时都会创建一个新作业。如果我知道工作已经安排好了,我可以避免这种情况,但不确定是否可行。
所以我的问题是使用这种菊花链是一种合理的模式,我如何避免每天多次运行该作业?
【问题讨论】:
标签: android android-job