[kotlin] “부적절한 차단 방법 호출”을 적절하게 만드는 방법은 무엇입니까?

나는 현재 kotlin 코 루틴을 더 활용하려고합니다. 그러나 나는 문제에 직면했다 :이 코 루틴에서 moshi 또는 okhttp를 사용할 때 경고가 발생합니다.

“부적절한 차단 방법 호출”

이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 나는 정말로 부적절하고 싶지 않다 😉



답변

경고는 현재 스레드를 차단하고 코 루틴을 올바르게 중단 할 수없는 방법에 관한 것입니다. 이렇게하면 코 루틴의 모든 이점을 잃고 스레드 당 한 작업으로 다시 다운 그레이드 할 수 있습니다.

각 사례는 다른 방식으로 처리해야합니다. 일시 중단 가능한 http 호출의 경우 ktor http client를 사용할 수 있습니다 . 그러나 경우에 따라 라이브러리가 없으므로 자체 솔루션을 작성 하거나이 경고를 무시할 수 있습니다.


답변

@Throws(IOException::class)(Kotlin 1.3.61)로 주석이 달린 일시 중단 함수를 호출 할 때도이 경고가 표시됩니다 . 그 의도인지 확실하지 않습니다. 어쨌든 해당 주석을 제거하거나 클래스로 변경하여이 경고를 해결할 수 있습니다 Exception.


답변