LifecycleScope,顾名思义,具有生命周期的协程。
它是LifecycleOwner生命周期所有者的扩展属性,与LifecycleOwner生命周期绑定
并会在LifecycleOwner生命周期destroyed的时候取消掉。自动取消,不会造成内存泄漏,可以替代MainScope。
LifecycleScope虽然是协程,但属于Lifecycle中的扩展属性。
lifecycleScope默认主线程,可以通过withContext来指定线程
lifecycleScope.launch(Dispatchers.IO){
// do
}
lifecycleScope.launch {
whenResumed {
// do
}
}
lifecycleScope.launchWhenResumed {
// do
}
whenResumed和launchWhenResumed执行时机一样,区别在于:
whenResumed 可以有返回结果
launchWhenResumed 返回的是Job对象
共有三个对应生命周期的扩展函数:
whenCreated
whenStarted
whenResumed