gpt4 book ai didi

android - OkHttp 异步调用 : AsyncTask or OkHttp async api?

转载 作者:行者123 更新时间:2023-11-29 01:23:16 26 4
gpt4 key购买 nike

我不太熟悉 OkHttp 库,我对它应该如何用于异步请求有一些疑问。

对于 Android 编程,我将 android 库用于 http,并将 asyncTask 用于某些请求。

但是因为我想尝试 OkHttp 库,所以我遇到了一些“问题”,关于它应该如何使用才是正确的。

示例:

假设您想使用 OkHttp 实现异步请求。我读到 OkHttp 有它自己的异步 api ( https://github.com/square/okhttp/blob/master/samples/guide/src/main/java/okhttp3/recipes/AsynchronousGet.java )。

但后来我看到了这篇文章 ( Square`s OkHttp. Download progress ),其中那个人使用了“旧的”asyncTask 但使用了 OkHttp 请求(我还在其他论坛上发现人们正在使用带有 OkHttp 的 AsyncTask)。

这有点困惑,因为它可以简单地用这段代码制作,也可以适用于 POST:

OkHttpClient client = new OkHttpClient();
// GET request
Request request = new Request.Builder()
.url("http://google.com")
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
Log.e(LOG_TAG, e.toString());
}

@Override
public void onResponse(Response response) throws IOException {
Log.w(LOG_TAG, response.body().string());
Log.i(LOG_TAG, response.toString());
}
});

问题:

  1. 在 OkHttp 中使用异步请求的正确方法是什么?
  2. 将 AsyncTask 与 OkHTTP 一起使用是一种好的做法吗?
  3. 在哪些情况下我应该将 AsyncTask 与 OkHttp 一起使用而不是使用 OkHttp 异步 API?

最佳答案

我尝试了这两种方法,它们都可以满足我的需要。这实际上取决于您的情况,以及您真正需要的是什么。 asynctask 版本更好,看起来更简单,但另一个版本(如果您通过改造来实现)提供了更多功能。

例如在 asyncTask 中,无法取消网络调用,这可以通过改造(我指的是改造,因为我尝试使用此解决方案)轻松完成。

这里有一些很好的链接,可以让您更好地了解改造的工作原理:

https://futurestud.io/blog/retrofit-2-upgrade-guide-from-1-9

http://instructure.github.io/blog/2013/12/09/volley-vs-retrofit/

另外AsyncTask其实就是同步调用(这个也要看AsyncTask的版本)。所以对于异步调用,你需要使用其他方法。

关于android - OkHttp 异步调用 : AsyncTask or OkHttp async api?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35538124/

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