В настоящее время я пытаюсь использовать котлин сопрограммы больше. Но я сталкиваюсь с проблемой: при использовании moshi или okhttp внутри этих сопрограмм я получаю предупреждение:
«неподходящий вызов метода блокировки»
Каков наилучший способ исправить это? Я действительно не хочу быть неуместным ;-)
Ответы:
Предупреждение касается методов, которые блокируют текущий поток, и сопрограмма не может быть правильно приостановлена. Таким образом, вы теряете все преимущества сопрограмм и снова понижаете до одного задания на поток.
Каждый случай должен быть обработан по-своему. Для приостановленных вызовов http вы можете использовать http-клиент ktor . Но иногда для вашего случая нет библиотеки, поэтому вы можете написать собственное решение или проигнорировать это предупреждение.
источник
withContext(Dispatchers.IO)
.withContext(Dispatchers.IO)
тогда он больше не блокируется, и предупреждение не верно, верно?Вы также получаете это предупреждение при вызове функции приостановки, которая
@Throws(IOException::class)
помечена (Kotlin 1.3.61). Не уверен, предназначено ли это или нет. В любом случае, вы можете исправить это предупреждение, удалив эту аннотацию или изменив ее наException
класс.источник