withcontext内的协程范围,仅withContext使用

时间:2020-07-01 23:37:19

标签: android kotlin-coroutines

您可以在下面看到两种方法,第一种使用withContext和coroutineScope,第二种仅使用coroutine Scope。如果仅与Context一起使用怎么办?还是只有协程范围?为什么两者都需要使用?

override suspend fun deleteAllTasks() {
        withContext(ioDispatcher) {
            coroutineScope {
                launch { tasksRemoteDataSource.deleteAllTasks() }
                launch { tasksLocalDataSource.deleteAllTasks() }
            }
        }
    }

override suspend fun deleteTask(taskId: String) {
    coroutineScope {
        launch { tasksRemoteDataSource.deleteTask(taskId) }
        launch { tasksLocalDataSource.deleteTask(taskId) }
    }
}

1 个答案:

答案 0 :(得分:0)

在这种情况下,coroutineScope内不需要withContext,因为withContext已经为您做到了。

在某些情况下,在coroutineScope中使用withContext可能会有用。

withContext(ioDispatcher) {
    coroutineScope {
        launch { tasksRemoteDataSource.deleteAllTasks() }
        launch { tasksLocalDataSource.deleteAllTasks() }
    }
    coroutineScope {
        launch { tasksRemoteDataSource.deleteAllTasks() }
        launch { tasksLocalDataSource.deleteAllTasks() }
    }
}

此处coroutineScope用于并行分解并描绘并发任务集。