JobScheduler和JobIntentService

时间:2017-09-21 07:56:42

标签: android

所以我目前使用JobScheduler根据各种条件安排工作,我以为我想用JobIntentService执行它们。但是,我发现JobIntentService也有enqueueWork()方法。这是JobScheduler的替代品吗?它是可选的,所以我可以忽略它,只需使用JobScheduler来安排任务,让JobIntentService只担心执行吗?

感谢。

1 个答案:

答案 0 :(得分:0)

为什么使用JobScheduler来运行JobIntentService? 根据官方文档JobIntentService will be subject to standard JobScheduler policies for a Job with a setOverrideDeadline(long) of 0,您无法对其应用其他JobScheduler's选项。 您必须使用它自己的enqueueWork方法

来运行它
enqueueWork(applicationContext, Intent(applicationContext, MyJobIntentService::class.java))

您的服务可以通过以下方式开发:

class MyJobIntentService : JobIntentService() {
    val TAG = "TAG_MyJobIntentService"
    override fun onHandleWork(intent: Intent) {
        // do your work here
        Log.i(TAG, "Executing work: " + intent)
    }
    companion object {
        internal val JOB_ID = 1000

        internal fun enqueueWork(context: Context, work: Intent) {
            JobIntentService.enqueueWork(context, MyJobIntentService::class.java, JOB_ID, work)
        }
    }
}

别忘了把它放到你的清单上

<service
     android:permission="android.permission.BIND_JOB_SERVICE"
     android:exported="false"
     android:name=".MyJobIntentService">
</service>