目 录CONTENT

文章目录

Kotlin 协程使用的一个小坑记录

Stars-one
2024-12-13 / 0 评论 / 0 点赞 / 4 阅读 / 1747 字

在withContext方法里如果开启一个新的协程,当此协程完成后,这个withContext才算完成

ElinCo.launch {

	Log.d("tta", "11111")
	delay(1000)
	Log.d("tta", "2222")

	testMyDat()
	Log.d("tta", "5555")
}

private suspend fun testMyDat() = withContext(Dispatchers.IO) {
	Log.d("tta", "3333")

	
	launch (Dispatchers.IO) {
		delay(6000)
		Log.d("tta", "3333结束循环中...")
	}

	delay(3000)
	Log.d("tta", "44444")
}

上述代码使用delay来代替其他的一些任务,然后需要注意的事:testMyDat()此方法里开启了一个新协程,整个方法实际会等9s

即withContext()里的,会等这个launch开启的子job完成(如果这里开了个while循环,就直接导致外层ElinCo.launch里面执行到testMyDat()后会直接一直等待了)

0

评论区