调用JobIntentService的onDestroy后会发生什么?

问题描述 投票:0回答:1

我有一个与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
                }))
    }
}

当服务实际上被“销毁”时,这实际上如何在后台运行?

android observable rx-java android-jobscheduler jobintentservice
1个回答
0
投票

[onHandleWork方法执行您的逻辑,如果您的逻辑启动异步任务,JobIntentService会告诉自己您执行的任务已执行(您执行的任务是执行一个异步任务SIMPLY),因此您收到了[C0 ]立即

如果onDestroy()直接执行您的逻辑(包括一个较长的过程),则在过程完成后将立即调用onHandleWork

为了完全理解它们之间的区别,您需要知道onDestroy()方法仅执行您的逻辑。

示例:

1-onHandleWork-> onHandleWork-> Asynctask.execute()

2-onDestroy()-> for循环-> onHandleWork

在(1-)上,您告诉onDestroy()方法执行一个异步任务,但不继续跟踪该过程的进度,onHandleWork执行onHandlework(仅需几毫秒)

在(2-)上,您告诉.execute()方法执行循环,该循环将阻止onHandleWork的调用,直到循环结束。

© www.soinside.com 2019 - 2024. All rights reserved.