Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android OkHttp异步调用:AsyncTask还是OkHttp异步api?_Android_Android Asynctask_Okhttp3 - Fatal编程技术网

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

Android OkHttp异步调用:AsyncTask还是OkHttp异步api?,android,android-asynctask,okhttp3,Android,Android Asynctask,Okhttp3,我对OkHttp库不太熟悉,对于如何将其用于异步请求,我有一些疑问 对于Android编程,我使用Android库进行http,使用asyncTask进行一些请求 但因为我想尝试OkHttp库,所以我在如何正确使用它方面遇到了一些“问题” 示例: 假设您想使用OkHttp实现异步请求。我听说OkHttp有自己的异步api() 但后来我看到了这篇文章(),其中一个人使用了“旧”asyncTask,但使用了OkHttp请求(我在其他论坛上也发现,人们使用asyncTask和OkHttp) 这可能有点

我对OkHttp库不太熟悉,对于如何将其用于异步请求,我有一些疑问

对于Android编程,我使用Android库进行http,使用asyncTask进行一些请求

但因为我想尝试OkHttp库,所以我在如何正确使用它方面遇到了一些“问题”

示例:

假设您想使用OkHttp实现异步请求。我听说OkHttp有自己的异步api()

但后来我看到了这篇文章(),其中一个人使用了“旧”asyncTask,但使用了OkHttp请求(我在其他论坛上也发现,人们使用asyncTask和OkHttp)

这可能有点混乱,因为它可以简单地用这段代码制作,这段代码也可以用于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());
    }
});
问题:

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

  • 我尝试了两种方法,它们都满足了我的需要。这取决于你的情况,以及你真正需要什么。asynctask版本更好,看起来更简单,但另一个版本(如果您使用改型)提供了更多功能

    e、 g.在asyncTask中,不可能取消网络呼叫,通过改造(我指的是我用此解决方案尝试的改造原因)可以轻松完成

    以下是一些很好的链接,让您更好地了解改装的工作原理:

    AsyncTask实际上也是同步调用(这也取决于AsyncTask版本)。所以对于异步调用,您需要使用其他方法