gpt4 book ai didi

android - 如果我需要使用 jobInfo 执行重复任务,我该如何设置 jobFinished()?

转载 作者:行者123 更新时间:2023-11-29 01:01:53 25 4
gpt4 key购买 nike

我希望用JobScheduler执行一个重复的任务。

我无法完全理解官方文档中有趣的jobFinished()

如果希望任务可以重复执行,jobFinished(parameters, false)jobFinished(parameters, true) 哪个代码是正确的?

顺便说一句,我已经为 JobScheduler 设置了 setPeriodic(interval)

代码

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

}

最佳答案

基于documentation :

You can request that the job be scheduled again by passing true as the wantsReschedule parameter. This will apply back-off policy for the job; this policy can be adjusted through the setBackoffCriteria(long, int) method when the job is originally scheduled. The job's initial requirements are preserved when jobs are rescheduled, regardless of backed-off policy.

jobFinished(parameters, true) 将重新安排您的工作。

如果你想定期执行某事,那么使用 setPeriodic在你的 JobInfo.Builder

关于android - 如果我需要使用 jobInfo 执行重复任务,我该如何设置 jobFinished()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50483340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com