我有一个与JobIntentService
生命周期有关的问题。从文档中,我发现JobIntentService
返回后立即销毁了onHandleWork(Intent intent)
。 onHandleWork
在后台运行,因此我可以在此处运行阻止操作。然后,如果我想异步运行实际的执行该怎么办?我似乎一切都按预期运行,但是即使调用onDestroy
之后,也很难理解Service仍在后台运行。下面是我对onHandleWork
的实现。
override fun onHandleWork(intent: Intent) {
if (!processor.isProcessing) {
subscription.add(processor.startProcessing()
.subscribe({
// Do something
}, { t ->
t.printStackTrace()
// Do something
}))
}
}
当服务实际上被“销毁”时,这实际上如何在后台运行?
[onHandleWork
方法执行您的逻辑,如果您的逻辑启动异步任务,JobIntentService
会告诉自己您执行的任务已执行(您执行的任务是执行一个异步任务SIMPLY),因此您收到了[C0 ]立即
如果onDestroy()
直接执行您的逻辑(包括一个较长的过程),则在过程完成后将立即调用onHandleWork
为了完全理解它们之间的区别,您需要知道onDestroy()
方法仅执行您的逻辑。
示例:
1-onHandleWork
-> onHandleWork
-> Asynctask.execute()
2-onDestroy()
-> for循环-> onHandleWork
在(1-)上,您告诉onDestroy()
方法执行一个异步任务,但不继续跟踪该过程的进度,onHandleWork
执行onHandlework
(仅需几毫秒)
在(2-)上,您告诉.execute()
方法执行循环,该循环将阻止onHandleWork
的调用,直到循环结束。