【问题标题】:When to release the coroutine resources in android service?什么时候释放android服务中的协程资源?
【发布时间】:2020-10-13 02:26:39
【问题描述】:

我在 JobIntentService 中使用 kotlin 协程,所以在 onHandleWork 上我将启动我的协程,一旦此任务结束,我需要通过取消 Job 来清理资源。 onDestroy 在服务启动后立即调用,由于我在 onHandleWork 上启动协程,它不会阻塞当前线程。

完成任务后是否强制取消协程?

如果是,androidService生命周期中的协程资源何时释放

谁能帮我解决这个问题?

【问题讨论】:

    标签: android kotlin android-service kotlin-coroutines jobintentservice


    【解决方案1】:

    完成任务后是否强制取消协程?

    不,这不是强制性的。通常在某些CoroutineScopeCoroutineScope 的上下文中的协程are launched 与某个生命周期相关联,通常是ActivityFragment。协程用于在后台线程中按顺序执行某些任务。

    JobIntentServiceis called on a background thread 的方法onHandleWork,所以可以在这里做长阻塞操作。我看不出你应该在这种方法中启动协程的原因。无需启动协程即可执行您的任务。

    由于我在onHandleWork 上启动协程,它不会阻塞当前线程。

    方法 onHandleWork 在后台线程上调用,因此您无需在那里启动协程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-25
      • 2021-12-09
      • 1970-01-01
      • 2013-07-27
      相关资源
      最近更新 更多