JobService()如何自行停止?

时间:2018-05-24 08:05:08

标签: android

我知道服务类中有一个有趣的stopSelf()可以阻止自己,在JobService()中有同样的乐趣吗?

代码

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
    }


    private fun completeRestore(parameters: JobParameters) {
        logError("Starting OK")              

        if (condition){
           //stopself()
        }       

        doSomting()

        jobFinished(parameters, false)
    }

}

加了:

private fun completeRestore(parameters: JobParameters) {
        logError("Starting OK")              

        if (condition){
           jobFinished(parameters, false) //Stop 
        }  else{     
            doSomting()
           jobFinished(parameters, false)
        }
    }

1 个答案:

答案 0 :(得分:2)

“停止JobService”有两种方法:

  1. false返回onStartJob,表示作业已完成,系统将释放唤醒锁。
  2. 如果onStartJob返回true,服务将继续运行,并在适当时使用单独的线程。在JobService被调用之前,jobFinished(parameters, false)将处于有效状态。调用jobFinished(parameters, false)将通知JobScheduler该作业已完成其工作。当系统收到此消息时,它会释放为该作业保留的唤醒锁。