我在我的JobIntentService中使用Kotlin协程,所以在onHandleWork上我会启动我的协程,一旦这些任务结束,我需要通过取消Job来清理资源。onDestroy在服务启动后立即调用,因为我在onHandleWork上启动协程,它不会阻塞当前线程。任务完成后是否必须取消协程?如果是,何时在android Service生命周期中发布协同程序资源有人能帮我吗?
JobIntentService
onHandleWork
Job
onDestroy
Service
crcmnpdw1#
完成任务后是否必须取消协程?不,这不是强制性的。通常协程在某个CoroutineScope的上下文中启动,并且CoroutineScope与某个生命周期绑定,通常是Activity或Fragment。协程用于以顺序方式在后台线程中执行某个任务。JobIntentService类的onHandleWork方法是在后台线程上调用的,所以你可以在这里做长的阻塞操作。我看不出你为什么要在这个方法中启动一个协程。只要执行你的任务而不启动协程就行了。因为我在onHandleWork上启动协程,所以它不会阻塞当前线程。onHandleWork方法是在后台线程上调用的,因此您不需要在那里启动协程。
CoroutineScope
Activity
Fragment
1条答案
按热度按时间crcmnpdw1#
完成任务后是否必须取消协程?
不,这不是强制性的。通常协程在某个
CoroutineScope
的上下文中启动,并且CoroutineScope
与某个生命周期绑定,通常是Activity
或Fragment
。协程用于以顺序方式在后台线程中执行某个任务。JobIntentService
类的onHandleWork
方法是在后台线程上调用的,所以你可以在这里做长的阻塞操作。我看不出你为什么要在这个方法中启动一个协程。只要执行你的任务而不启动协程就行了。因为我在
onHandleWork
上启动协程,所以它不会阻塞当前线程。onHandleWork
方法是在后台线程上调用的,因此您不需要在那里启动协程。