gpt4 book ai didi

android - 使用OKHttp,AsyncTask中的同步请求和OKhttp异步请求有什么区别?

转载 作者:IT老高 更新时间:2023-10-28 22:01:26 28 4
gpt4 key购买 nike

OKHttp 支持 synchronous and asynchronous api .如果我想发出异步请求,我可以:

  1. 使用 AsyncTask,并发出 OKhttp 同步 api。
  2. 发布一个 OKhttp 异步 api。

这两个选项有什么区别?哪个更好?

最佳答案

差别很大!

对 HTTP 请求使用 AsyncTask 几乎是您在 Android 上可以做的最糟糕的事情之一。它充满了最好无条件避免的问题和陷阱。例如,您不能在执行期间取消请求。使用 AsyncTask 的模式通常也会泄露对 Activity 的引用,这是 Android 开发的一大罪过。

OkHttp 的 async 非常优越,原因有很多:

  • 支持原生取消。如果请求正在进行中,则对 Callback 的引用将被释放并且永远不会被调用。此外,如果请求尚未开始,它将永远不会被执行。如果您使用的是 HTTP/2 或 SPDY,我们实际上可以取消中间请求以节省带宽和功率。
  • 它支持标记多个请求并通过单个方法调用将它们全部取消。这意味着您在 Activity 中发出的每个请求都可以使用 Activity 实例进行标记。然后在 onPauseonStop 中,您可以取消所有带有 Activity 实例标记的请求。
  • 如果您使用 HTTP/2 或 SPDY 请求和响应通过单个连接多路复用到远程服务器,并且通过使用异步 Call 机制,这比阻塞版本更有效。

因此,如果可以,请使用 Call.enqueue!

关于android - 使用OKHttp,AsyncTask中的同步请求和OKhttp异步请求有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27340865/

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