首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OkHttp异步调用: AsyncTask还是OkHttp异步api?

OkHttp异步调用: AsyncTask还是OkHttp异步api?
EN

Stack Overflow用户
提问于 2016-02-21 15:41:24
回答 1查看 5.8K关注 0票数 2

我不太熟悉OkHttp库,对于如何使用它来处理异步请求,我也有一些疑问。

对于Android编程,我使用的是http的android库,对于一些请求我使用的是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请求(我还在其他论坛上发现,人们正在使用AsyncTask和OkHttp)。

这有点混乱,因为它可以简单地用这段代码来制作,这段代码也可以用于发布:

代码语言:javascript
复制
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?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-05 18:30:57

我尝试了这两种方法,它们都在满足我的需要。这取决于你的情况和你真正需要什么。异步任务版本更好,看起来更容易,但是另一个版本(如果您也是通过改造完成的话)提供了一些更多的功能。

例如,在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版本)。因此,对于异步调用,您需要使用其他方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35538124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档