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