vac*_*ach 3 coroutine kotlin kotlinx.coroutines kotlin-coroutines
鉴于我们有job1 : Job
并且job2 : Job
我们想要创建job2
一个子节点job1
(它们单独创建没有关系)。
声明这种关系的正确方法是什么?以便job1
取消时间job2
也取消...
我试过了,job1.attachChild(e1.job2 as ChildJob)
但这是内部 api。当我从 job1 协程启动 job2 时,我不想做一些 hack。
您可以使用Job(parent: Job?)
接收父作业作为参数的工厂函数。它有以下定义:
public fun Job(parent: Job? = null): Job
Run Code Online (Sandbox Code Playgroud)
这意味着参数parent是可选的。所以你可以像这样创建你的工作:
var parentJob: Job = Job()
var childJob: Job = Job(parentJob)
Run Code Online (Sandbox Code Playgroud)
另请看一下SupervisorJob
,它可以用于自定义Job
. SupervisorJob
工厂函数有类似的定义:
fun SupervisorJob(parent: Job? = null): Job
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
785 次 |
最近记录: |