欢迎来到一分钟 KT Tips! 🎉
想必在日常生活中,大家总会遇到这样的苦恼:我有一个 Job
,但是它有两个“候选parent
”。这可愁坏了我们亲爱的小job:
val pJob1: Job = Job()fun createJob(pJob2: Job): Job {return Job(pJob1 还是 pJob2 ?)
}
如果我们希望不论是 pJob1
还是 pJob2
只要它们结束了、或者终止了,都会告诉我们的小job,也让它停下脚步,那么该怎么办呢?这时候,我们可以选择其中一个作为真正的 parent
, 而其他人,则可以通过 invokeOnCompletion
来达到通知我们的小job的目的。
val pJob1: Job = Job()fun createJob(pJob2: Job): Job {val job = Job(pJob2)pJob1.invokeOnCompletion { e -> job.cancel(e?.let { CancellationException(it.message, it) })}return job
}
你学废会了吗?如果有更好的办法也欢迎评论区补充喔~我们下次再见 ヾ(•ω•`)o