我有一个来自 Evernote 库的 android-job。该作业设置为在某些情况下定期运行。所以只有当我想定期开始工作时才会调用工作构建(这不是在我的应用程序的开头)
创建一个作业服务:
class JobService : Job() {
companion object {
private var jobId = 0
fun scheduleJobPeriodically(ms: Long) {
if (jobRequested()) {
cancelJob()
}
jobId = JobRequest.Builder("JOB_TAG")
.setRequiredNetworkType(JobRequest.NetworkType.CONNECTED)
.setPeriodic(ms, TimeUnit.MINUTES.toMillis(5))
.setRequirementsEnforced(true)
.build()
.schedule()
}
fun cancelJob() {
JobManager.instance().cancel(jobId)
}
}
override fun onRunJob(params: Params): Result {
Timber.d(">>>>>>>>>>>Job is Running")
Result.SUCCESS
}
}
就业创造者:
class MyJobCreator : JobCreator {
override fun create(tag: String): Job? {
return when (tag) {
"JOB_TAG" -> {
JobService()
}
else -> null
}
}
}
在应用程序类中添加注册作业所需的行:
JobManager.create(this).addJobCreator(MyJobCreator())
此时应用程序启动并创建了 JobService 类。(好的)但是在这个类中,有这个方法scheduleJobPeriodically,并且这个方法被触发并且它不应该被触发,因为我没有明确地启动它。我已经在调试模式下启动了我的应用程序,并且我确信不会直接调用定期创建,以及为作业设置标签的 JobRequestBuilder。但是onRunJob中的代码被触发了,这就是问题所在。
预先感谢。