簡體   English   中英

Kotlin:在創建協程范圍時是否應將作業與調度程序一起傳遞

[英]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工廠函數。 它不接受任何參數並准確構建您需要的范圍。 從文檔:

結果范圍具有SupervisorJobDispatchers.Main上下文元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM