Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 谷歌架构示例中的coroutineScope{launch{code}}和withContext(Iiodispatcher){code}之间有什么区别?_Android_Kotlin_Kotlin Coroutines_Coroutinescope - Fatal编程技术网

Android 谷歌架构示例中的coroutineScope{launch{code}}和withContext(Iiodispatcher){code}之间有什么区别?

Android 谷歌架构示例中的coroutineScope{launch{code}}和withContext(Iiodispatcher){code}之间有什么区别?,android,kotlin,kotlin-coroutines,coroutinescope,Android,Kotlin,Kotlin Coroutines,Coroutinescope,代码: 上述代码链接中的代码段: override suspend-fun-activateTask(taskId:String){ withContext(Iiodispatcher){ (getTaskWithId(taskId)作为?成功)?。让{it-> activateTask(it.data) } } } 覆盖挂起clearCompletedTasks(){ 共线镜{ 启动{tasksRemoteDataSource.clearCompletedTasks()} 启动{tasksLo

代码:

上述代码链接中的代码段:

override suspend-fun-activateTask(taskId:String){
withContext(Iiodispatcher){
(getTaskWithId(taskId)作为?成功)?。让{it->
activateTask(it.data)
}
}
}
覆盖挂起clearCompletedTasks(){
共线镜{
启动{tasksRemoteDataSource.clearCompletedTasks()}
启动{tasksLocalDataSource.clearCompletedTasks()}
}
}
覆盖挂起和删除所有任务(){
withContext(Iiodispatcher){
共线镜{
启动{tasksRemoteDataSource.deleteAllTasks()}
启动{tasksLocalDataSource.deleteAllTasks()}
}
}
}
覆盖挂起任务(任务ID:字符串){
共线镜{
启动{tasksRemoteDataSource.deleteTask(taskId)}
启动{tasksLocalDataSource.deleteTask(taskId)}
}
}
什么时候用哪个

有时,
coroutineScope{launch{code}}
withContext(iODispatcher)

何时使用:
coroutineScope{launch{code}}

何时使用:
withContext(Iiodispatcher)

何时使用它们嵌套:
coroutineScope{launch{code}}
withContext(iODispatcher)
withContext(iODispatcher)
应用于将
{}
内运行的阻塞IO任务卸载到共享线程池中

coroutineScope{}
创建一个子作用域,该子作用域从父作用域的coroutineContext继承coroutineContext。它应该用于“工作的并行分解”。这也意味着当作用域中的任何子协同路由失败时,该作用域和任何其他子作用域也将被取消