什么时候释放android服务中的协程资源?
Posted
技术标签:
【中文标题】什么时候释放android服务中的协程资源?【英文标题】:When to release the coroutine resources in android service? 【发布时间】:2020-10-13 02:26:39 【问题描述】:我在 JobIntentService
中使用 kotlin 协程,所以在 onHandleWork
上我将启动我的协程,一旦此任务结束,我需要通过取消 Job
来清理资源。 onDestroy
在服务启动后立即调用,由于我在 onHandleWork
上启动协程,它不会阻塞当前线程。
完成任务后是否强制取消协程?
如果是,android
Service
生命周期中的协程资源何时释放
谁能帮我解决这个问题?
【问题讨论】:
【参考方案1】:完成任务后是否强制取消协程?
不,这不是强制性的。通常在某些CoroutineScope
和CoroutineScope
的上下文中的协程are launched 与某个生命周期相关联,通常是Activity
或Fragment
。协程用于在后台线程中按顺序执行某些任务。
JobIntentService
类is called on a background thread 的方法onHandleWork
,所以可以在这里做长阻塞操作。我看不出你应该在这种方法中启动协程的原因。无需启动协程即可执行您的任务。
由于我在
onHandleWork
上启动协程,它不会阻塞当前线程。
方法 onHandleWork
在后台线程上调用,因此您无需在那里启动协程。
【讨论】:
以上是关于什么时候释放android服务中的协程资源?的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin 协程协程取消 ③ ( finally 释放协程资源 | 使用 use 函数执行 Closeable 对象释放资源操作 | 构造无法取消的协程任务 | 构造超时取消的协程任务 )