Atualmente, estou tentando aproveitar mais as corotinas da kotlin. Mas enfrento um problema: ao usar moshi ou okhttp dentro dessas corotinas, recebo um aviso:
"chamada de método de bloqueio inadequado"
Qual é a melhor maneira de corrigir isso? Eu realmente não quero ser inapropriado ;-)
Respostas:
O aviso é sobre métodos que bloqueiam o encadeamento atual e a corotina não pode ser adequadamente suspensa. Dessa forma, você perde todos os benefícios das corotinas e faz o downgrade para um trabalho por thread novamente.
Cada caso deve ser tratado de uma maneira diferente. Para chamadas http suspensíveis, você pode usar o cliente http ktor . Mas, às vezes, não há biblioteca para o seu caso, portanto, você pode escrever sua própria solução ou ignorar esse aviso.
fonte
withContext(Dispatchers.IO)
.withContext(Dispatchers.IO)
, ele não estará mais bloqueando e o aviso não está correto, certo?Você também recebe esse aviso ao chamar uma função de suspensão anotada com
@Throws(IOException::class)
(Kotlin 1.3.61). Não tenho certeza se isso é intencional ou não. De qualquer forma, você pode corrigir esse aviso removendo a anotação ou alterando-a paraException
classe.fonte