Как я могу установить jobFinished (), если мне нужно выполнить повторную задачу с jobInfo? - PullRequest
0 голосов
/ 23 мая 2018

Я надеюсь выполнить повторное задание с JobScheduler.

Я не могу полностью понять веселья jobFinished() из официального документа.

Какой код является правильным между jobFinished(parameters, false) иjobFinished(parameters, true) если я надеюсь, что задача может быть выполнена повторно?

Кстати, я установил setPeriodic (интервал) для JobScheduler

Код

private fun startScheduleRestore(mContext:Context){
   logError("Start Server")

   val interval=10 *1000L

    val mJobScheduler = mContext.getSystemService(Context.JOB_SCHEDULER_SERVICE) as JobScheduler

    val jobInfo = JobInfo.Builder(mContext.getInteger(R.integer.JobID), ComponentName(mContext, RestoreService::class.java))
                        .setPeriodic(interval)
                        .setPersisted(true)
                        .build()

    mJobScheduler.schedule(jobInfo)
}



class RestoreService : JobService() {
    override fun onCreate() {
        logError("OnCreate")
        super.onCreate()
    }

    override fun onDestroy() {
        logError("OnDestory")
        super.onDestroy()
    }

    override fun onStartJob(params: JobParameters): Boolean {
        Thread(Runnable { completeRestore(params) }).start()
        return true
    }

    override fun onStopJob(params: JobParameters): Boolean {
        logError("OnStop")
        return false
    }


    fun completeRestore(parameters: JobParameters) {
        logError("Starting")
        jobFinished(parameters, false)
    }

}

1 Ответ

0 голосов
/ 23 мая 2018

На основе документации :

Вы можете запросить повторное планирование задания, передав значение true в качестве параметра wantReschedule. Это будет применяться обратно- политика выхода на работу;эту политику можно настроить с помощью метода setBackoffCriteria (long, int), когда задание изначально запланировано.T Первоначальные требования к работе сохраняются при перепланировании заданий независимо от политики отмены.

jobFinished(parameters, true) перенастроит вашу работу.

Если вы хотите выполнять что-то периодически, используйте setPeriodic в вашем JobInfo.Builder

...