应用程序启动时运行的作业不应

时间:2018-05-30 08:21:44

标签: android android-job

我有一个来自Evernote lib的android-job。该作业将在某些情况下定期运行。因此,只有当我想定期开始工作时才会调用作业构建(这不是我的应用程序的开头)

创建JobService:

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
    }
}

JobCreator:

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 中的代码被触发了,这就是问题所在。

提前感谢。

0 个答案:

没有答案