Oya*_*nlı 1 android android-custom-view kotlin-coroutines coroutinescope
我需要在自定义视图中使用协程。看完这个演讲,我相信我最好的选择是使用lifecycleScope作为协程范围,这样当lifecycleowner被销毁时它会自动取消。
但是我似乎无法访问自定义视图中的生命周期范围。根据文档,我们可以从生命周期对象 aslifecycle.coroutineScope
或从生命周期所有者as访问它lifecycleOwner.lifecycleScope
。但是自定义视图不是生命周期所有者。那么我可以以某种方式访问片段的生命周期范围吗?或者如果我不能,我应该使用哪个协程上下文?
我通过实现LifecycleObserver接口解决了这个问题。Udacity 免费课程的第4 课很好地解释了如何使用 LifecycleObserver 接口制作生命周期感知组件。
我在片段内部和自定义视图内部注册了片段的生命周期,在获取生命周期的同时,我使用生命周期来获取生命周期范围。
//Inside custom view
fun registerLifecycleOwner(lifecycle: Lifecycle){
lifecycle.addObserver(this)
scope = lifecycle.coroutineScope
}
//Inside fragment
binding.myCustomView.registerLifecycleOwner(lifecycle)
Run Code Online (Sandbox Code Playgroud)
然后在自定义视图中,我像这样使用它:
scope.launch{
//Do work
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1911 次 |
最近记录: |