范围如何与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中的最佳范围所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)