tic*_*fab 3 android networkonmainthread retrofit
这里已经提到过这个问题,但这是一个很老的问题,我找不到任何其他信息.
Retrofit API调用的Request Interceptor在主线程上执行.处理AccountManager以将auth令牌添加到请求标头时,这是一个问题,例如
String token = mAccountManager.blockingGetAuthToken(account, AuthConsts.AUTH_TYPE, false);
Run Code Online (Sandbox Code Playgroud)
同样的问题上讨论G +并没有在GitHub上一个相关的问题在这里.
虽然这一切都有效(感谢SquareUp!),解决它的最佳方法是什么?在AsyncTask或类似事件中包装Retrofit调用感觉就像使整个想法失效一样.
Jak*_*ton 12
Retrofit的拦截器用于使用已知信息修改请求.也就是说它应该是一个简单的实例转换.
您正在寻找的最佳方法是使用OkHttp的拦截器来添加标头.这些将在后台线程上运行.
class AuthInterceptor implements Interceptor {
@Override public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
String authHeader = // TODO get auth token
request = request.builder()
.header("Authorization", authHeader)
.builder();
return chain.proceed(request);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3733 次 |
| 最近记录: |