sitepodmatt
02/28/2019, 3:36 AMgildor
02/28/2019, 4:34 AMgildor
02/28/2019, 4:34 AMval parentJob: Job? = coroutineContext[Job]
sitepodmatt
02/28/2019, 6:55 AMsitepodmatt
02/28/2019, 6:55 AMgildor
02/28/2019, 6:57 AMgildor
02/28/2019, 6:57 AMsitepodmatt
02/28/2019, 6:57 AMgildor
02/28/2019, 6:57 AMsitepodmatt
02/28/2019, 6:58 AMsitepodmatt
02/28/2019, 6:59 AMsitepodmatt
02/28/2019, 7:18 AM@UseExperimental(InternalCoroutinesApi::class)
fun Job.getParent() : Job? {
return (AbstractCoroutine::class.java as Class<*>)?.
getDeclaredField("parentContext")?.
also { it.isAccessible = true }?.
let { it.get(this) as? CoroutineContext? }?.
let { it[Job] }
}
sitepodmatt
02/28/2019, 7:18 AMrunBlocking {
val job1 = this.coroutineContext[Job]
launch {
val job2 = this.coroutineContext[Job]
val parent = job2!!.getParent()
println(parent == job1)
}
}