私は 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 クラスが作成されます。(OK)しかし、このクラスには、このメソッドscheduleJobPeriodicallyがあり、このメソッドは起動されますが、明示的に起動しないため、起動されるべきではありません。アプリをデバッグ モードで起動しましたが、ジョブのタグを設定する JobRequestBuilder だけでなく、定期的な作成が直接呼び出されていないことも確かです。しかし、onRunJobのコードが起動され、それが問題です。
少し早いですがお礼を。