[英]Kotlin: Should a job be passed along with a dispatcher while creating a coroutine scope
我在做
private val uiScope = CoroutineScope(Dispatchers.Main)
創建一個協程范圍並使用它來啟動我的片段中的協程。
uiScope.launch {
withContext(Dispatchers.Default) {
....
}
....
}
當片段從窗口分離時,我在 uiScope 上取消。 在創建 uiScope 時,我還應該傳遞一個 job() 嗎?
fun CoroutineScope
的文檔fun CoroutineScope
很清楚:
如果給定的上下文不包含
Job
元素,則創建一個默認的Job()
。 這樣,取消或失敗或此范圍內的任何子協程都會取消所有其他子coroutineScope
,就像在coroutineScope
塊中一樣。
使用傳播其子項失敗的作業不是頂級范圍的最佳選擇。 您應該改用MainScope
工廠函數。 它不接受任何參數並准確構建您需要的范圍。 從文檔:
結果范圍具有
SupervisorJob
和Dispatchers.Main
上下文元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.