Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如果需要使用jobInfo执行重复任务,如何设置jobFinished()?_Android_Android Jobscheduler - Fatal编程技术网

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

Android 如果需要使用jobInfo执行重复任务,如何设置jobFinished()?,android,android-jobscheduler,Android,Android Jobscheduler,我希望使用JobScheduler执行重复任务 我无法完全理解官方文件中的乐趣jobFinished() 如果我希望任务可以重复执行,那么jobFinished(parameters,false)和jobFinished(parameters,true)之间的哪个代码是正确的 顺便说一句,我已经为JobScheduler设置了setPeriodic(interval) 代码 private fun startScheduleRestore(mContext:Context){ logErr

我希望使用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)
    }

}
根据:

通过将true作为 wantsReschedule参数。这将对该参数应用回退策略 工作;该政策可通过退让标准(长期、, 初始计划作业时的int)方法。他刚开始工作 在重新安排作业时,无论发生什么情况,都会保留需求 放弃政策。

jobFinished(参数,true)
将重新安排作业


如果您想定期执行某些操作,请在您的
JobInfo.Builder

中使用,谢谢!我必须在我的代码中设置
setPeriodic(interval)
。如果我希望任务可以重复执行,那么jobFinished(参数,false)和jobFinished(参数,true)之间的哪个代码是正确的?@HelloCW如果您设置了periodic(),那么您应该
(参数,false)
,因为
jobFinished()
是特定于作业的。jobFinished()不会阻止您设置的周期时间继续。它只是告诉作业你已经完成了,释放wakelock,所以Android不必强行终止作业。