不适当的阻塞方法调用

不适当的阻塞方法调用

本文介绍了如何进行“不适当的阻塞方法调用"合适的?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前正在尝试更多地利用 kotlin 协程.但我面临一个问题:在这些协程中使用 moshi 或 okhttp 时,我收到警告:

I am currently trying to leverage kotlin coroutines more. But I face a problem: when using moshi or okhttp inside these coroutines I get a warning:

不恰当的阻塞方法调用"

"inappropriate blocking method call"

解决这些问题的最佳方法是什么?我真的不想不合适;-)

What is the best way to fix these? I really do not want to be inappropriate ;-)

推荐答案

警告是关于阻塞当前线程和协程的方法无法正确挂起.这样,您将失去协程的所有好处,并再次降级为每个线程一个作业.

The warning is about methods that block current thread and coroutine cannot be properly suspended. This way, you lose all benefits of coroutines and downgrade to one job per thread again.

每种情况都应以不同的方式处理.对于可挂起的 http 调用,您可以使用 ktor http 客户端.但有时没有适合您情况的库,因此您可以编写自己的解决方案或忽略此警告.

Each case should be handled in a different way. For suspendable http calls you can use ktor http client. But sometimes there is no library for your case, so you can either write your own solution or ignore this warning.

withContext(Dispatchers.IO) 或一些自定义调度程序可用于解决该问题.感谢您的评论.

withContext(Dispatchers.IO) or some custom dispatcher can be used to workaround the problem. Thanks for the comments.

这篇关于如何进行“不适当的阻塞方法调用"合适的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-30 08:05