gpt4 book ai didi

android - 在 Dispatcher.Main 的上下文中执行网络任务

转载 作者:行者123 更新时间:2023-12-04 23:58:00 25 4
gpt4 key购买 nike

根据帮助,长网络任务应该在Dispatcher.IO的上下文中执行。

但是为什么不能在 Dispatcher.Main 上下文中使用像 get 这样的挂起函数?线程本身并没有被阻塞,所以我们是否认为代码会出现任何问题,例如:

GlobalScope.launch(Dispatchers.Main) {
val client = HttpClient(Android)
var data: String = client.get('http://example.com')
}

假设 get 是一个耗时较长的挂起函数。

谢谢。

最佳答案

你就在这里。您可以在 Dispatchers.Main 中发出该网络请求。

这似乎是一个常见的误解,因为 IO 是由挂起函数执行的,所以你必须在 Dispatchers.IO 中调用它,这是不必要的(而且可能很昂贵)。

按照惯例挂起函数不会阻塞调用线程,如果需要的话会在 Dispatchers.IO 中进行内部阻塞。

关于android - 在 Dispatcher.Main 的上下文中执行网络任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62180453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com