使用ExecutorService+Runnables 好还是使用Call Enqueue 好?

Is it better to use ExecutorService+Runnables or to use Call Enqueue?

抱歉,如果这个问题太简单了,我是使用远程数据源的新手。

我假设 Enqueue 运行 在后台线程而不是主线程上,但哪个更快更好地进行优化?据我了解使用Runnables会占用更多代码,但我已经看到多个应用程序使用这种方法构建,它是否比更简单的Enqueue方法更好?

Retrofit 将使用底层 OkHttp 来调用服务器。 Enqueue 经过测试,最好使用开发人员全球认可的性能测试和许多其他方面。它还涵盖了您的 ExecutorService,而您无需为其编写实现。我会为刚接触 OkHttp 的读者补充几点。

  • new Request.Builder().url(endpoint).build() 创建请求但是 不发送任何东西。

  • client.newCall(request).execute()发送请求并等待 响应,但不下载响应,只下载它的 headers 所以 您可以立即查看 response.isSuccessful() 之类的内容。

  • response.body().string() 下载响应的 body 和 returns 一个字符串。

您可以像这样推送自己的 ExecutorService 实现

OkHttpClient.Builder().dispatcher(Dispatcher(executorService)).build()