我在做

 private val uiScope = CoroutineScope(Dispatchers.Main)

创建一个协程镜,并使用它在我的片段中启动协程。
uiScope.launch {
        withContext(Dispatchers.Default) {
            ....
        }
        ....
    }

当片段从窗口分离时,我对uiScope进行了取消。在创建uiScope时,我还应该传递一个job()吗?

最佳答案

fun CoroutineScope 的文档对此很明确:



对于顶级范围而言,使用传播其子项故障的作业不是最佳选择。您应该改为使用 MainScope 工厂功能。它不带任何参数,并精确地构造您需要的范围。从文档:

09-27 11:43