android-带有动态拦截器的Okhttp3在Dagger2中的最佳范围

android-带有动态拦截器的Okhttp3在Dagger2中的最佳范围,第1张

概述范围如何与Auth令牌一起使用?在添加可以使用auth令牌对其进行签名的拦截器之前,我无法创建Retrofit实例.因此,我想在auth令牌可用时(登录后)创建Retrofit.在这种情况下,如何使示波器正常工作?非常感谢!解决方法:没有最佳的方法来执行此 *** 作,并且它还取决于更改/重新创建Retrofit实例

范围如何与Auth令牌一起使用?在添加可以使用auth令牌对其进行签名的拦截器之前,我无法创建Retrofit实例.因此,我想在auth令牌可用时(登录后)创建Retrofit.在这种情况下,如何使示波器正常工作?

非常感谢!

解决方法:

没有最佳的方法来执行此 *** 作,并且它还取决于更改/重新创建Retrofit实例的频率.

哪个更好,哪个更适合您的用例,在很大程度上取决于您要完成的工作以及如何完成.您尝试实现目标的方式有很多,但总的来说,您有两种选择

>为每个改造实例创建一个新客户端(例如,如果您只登录一次用户),则只需在相同范围内添加客户端
>创建okhttp3的@Singleton实例,并在需要时使用newBuilder()修改客户端

我认为第一点是不言而喻的,只是在创建改造时创建客户,使用相同的作用域并完成.

第二种方法通过在创建改造实例时将拦截器添加到okhttp客户端,从而使用newBuilder()方法的Okhttp3功能.

它看起来像这样:

// Some singleton clIEnt to maybe also use in other parts of your app@SingletonOkhttpClIEnt provIDeClIEnt() { return new OkhttpClIEnt(); }// creating your retrofit clIEnt@UserScopeRetrofit provIDeRetrofit(OkHtpClIEnt clIEnt, Interceptor userInterceptor) {    return new Retrofit.Builder()            .clIEnt(clIEnt.newBuilder() // new builder to modify okhttp3                .addNetworkInterceptor(interceptor)                .build())            /* other settings */            .build();}

如果您有创造力,也可以只在拦截器上公开setCredentials()方法,则只需创建一次即可,然后通过将它们添加到@Singleton范围来重用所有对象.然后,您可以通过访问和修改拦截器来更改用户,尽管按照我的拙见,这不是一个干净的方法.

总结

以上是内存溢出为你收集整理的android-带有动态拦截器的Okhttp3在Dagger2中的最佳范围全部内容,希望文章能够帮你解决android-带有动态拦截器的Okhttp3在Dagger2中的最佳范围所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1120718.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存