![](/img/trans.png)
[英]In Retrofit, what is meant by “callbacks will happen on the same thread that executed the HTTP request”?
[英]What will happen if every request has a retrofit instance?
我最近在想一个问题。
如果每个请求都有一个改造实例,将会发生什么?
我希望每个请求都具有改造实例的原因:
每个改造实例都有一个OkHttpClient实例 ,因此我想将Interception添加到OkhttpClient,但并非每个请求都应被拦截 ,并且我还想向OkHttpClient添加一些相同的标头 ,但并非每个请求都必须具有相同的标头 ,例如登录时请求,我不需要添加令牌。但是可能需要其他请求。
因此,我的方法是让每个请求都具有一个改造实例 ,之前我有一个演示,但是请求的数量很少 ,所以我不确定在有太多请求时是否会麻烦 ?
我有两个问题:
1.它会产生一些异常吗?还是会导致堆栈溢出?
2.是否有解决该问题的更好方法?
是否有其他人具有相同的经验或有什么想法要问?
您可以使用@Headers
批注将静态/动态标题添加到Retrofit
。 此外,您不应按照文档中所述创建单独的OkHttp
实例:
创建单个OkHttpClient实例并将其用于所有HTTP调用时,OkHttp的性能最佳。 这是因为每个客户端都拥有自己的连接池和线程池。 重用连接和线程可减少延迟并节省内存。 相反,为每个请求创建一个客户端会浪费空闲池上的资源。
如果您想为每个OkHttp
不同的配置,只需使用client.newBuilder()
(可从3.x版本获得):
您可以使用newBuilder()自定义共享的OkHttpClient实例。 这将构建共享相同连接池,线程池和配置的客户端。 使用构建器方法为特定目的配置派生的客户机。
如果@Headers
不适合您,只需创建想要创建不同Retrofit
服务的OkHttpClient
配置,就可以了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.