J'essaie actuellement de tirer davantage parti des coroutines kotlin. Mais je fais face à un problème: lorsque j'utilise moshi ou okhttp à l'intérieur de ces coroutines, je reçois un avertissement:
"appel de méthode de blocage inapproprié"
Quelle est la meilleure façon de résoudre ces problèmes? Je ne veux vraiment pas être inapproprié ;-)
Réponses:
L'avertissement concerne les méthodes qui bloquent le thread actuel et la coroutine ne peuvent pas être correctement suspendues. De cette façon, vous perdez tous les avantages des coroutines et rétrogradez à un travail par thread.
Chaque cas doit être traité d'une manière différente. Pour les appels http suspendables, vous pouvez utiliser le client http ktor . Mais parfois, il n'y a pas de bibliothèque pour votre cas, vous pouvez donc écrire votre propre solution ou ignorer cet avertissement.
la source
withContext(Dispatchers.IO)
.withContext(Dispatchers.IO)
alors il ne bloque plus et l'avertissement n'est pas correct, non?Vous obtenez également cet avertissement lors de l'appel d'une fonction de suspension qui est annotée avec
@Throws(IOException::class)
(Kotlin 1.3.61). Je ne sais pas si cela est prévu ou non. Quoi qu'il en soit, vous pouvez corriger cet avertissement en supprimant cette annotation ou en la modifiant enException
classe.la source