Obecnie próbuję bardziej wykorzystać kotlin coroutines. Ale mam problem: kiedy używam moshi lub okhttp w tych koronach, dostaję ostrzeżenie:
„nieodpowiednie wywołanie metody blokowania”
Jak najlepiej to naprawić? Naprawdę nie chcę być nieodpowiednia ;-)
Odpowiedzi:
Ostrzeżenie dotyczy metod, które blokują bieżący wątek i nie można poprawnie zawiesić coroutine. W ten sposób tracisz wszystkie zalety korupcji i ponownie obniżasz do jednego zadania na wątek.
Każda sprawa powinna być traktowana w inny sposób. Do zawieszanych połączeń http można użyć klienta ktor http . Ale czasami nie ma biblioteki dla twojej sprawy, więc możesz napisać własne rozwiązanie lub zignorować to ostrzeżenie.
źródło
withContext(Dispatchers.IO)
.withContext(Dispatchers.IO)
, to nie będzie już blokował, a ostrzeżenie nie będzie poprawne, prawda?To ostrzeżenie pojawia się także podczas wywoływania funkcji wstrzymującej z adnotacją
@Throws(IOException::class)
(Kotlin 1.3.61). Nie jestem pewien, czy jest to zamierzone, czy nie. W każdym razie możesz naprawić to ostrzeżenie, usuwając adnotację lub zmieniając ją naException
klasę.źródło