我正在尝试使用协同程序实现异步任务功能。使用下面的代码片段,我可以实现异步任务功能。
fun execute(vararg params: Params?) {
job = CoroutineScope(Dispatchers.Default).launch {
withContext(Dispatchers.Main) {
onPreExecute()
}
withContext(Dispatchers.IO) {
doInBackground(*params)
}
withContext(Dispatchers.Main) {
onPostExecute(result)
}
}
}
我只担心在父协程中使用哪个调度程序。是Dispatchers.Default(或)Dispatchers.IO。 通过这两个调度程序,功能都可以正常工作。
使用Dispatchers.IO是否正确?
使用Dispatchers.Default吗?
注意:如果我的理解有误,请纠正我。
问题区域:父调度程序适合使用什么调度程序?
答案 0 :(得分:1)
我将Dispatchers.Main
用作协程范围的上下文:
fun execute(vararg params: Params?) {
job = CoroutineScope(Dispatchers.Main).launch {
onPreExecute()
val result = withContext(Dispatchers.IO) {
doInBackground(*params)
}
onPostExecute(result)
}
}
在这种情况下,您无需将Dispatchers.Main
和onPreExecute
函数的上下文切换到onPostExecute
。