Я пытаюсь реализовать функцию Asyn c Task с помощью Coroutines. С помощью приведенного ниже фрагмента я могу достичь функциональности Asyn c Task.
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?,
- As Он поддерживается общим пулом потоков на JVM.
- Как есть родительский элемент 3 дочерних сопрограмм?
- Поскольку он является родительским элементом сопрограммы, имеющей Dispatchers.Main
Примечание. Исправьте меня, если мое понимание выше неверно.
Проблема area: Какой диспетчер подходит для родительского диспетчера?