Closed seiton-it closed 8 years ago
Retrofit 2's observables execute synchronously. Use subscribeOn
to put its work on a background thread.
I observed similar behavior. I'm performing a call from main thread using the asynchronous option with enqueue(). Additionally I added this interceptor
public class MyInterceptor implements com.squareup.okhttp.Interceptor
{
@Override
public Response intercept( Chain chain ) throws IOException
{
Request request = chain.request();
Log.i( "Interceptor", "before request" );
Response response = chain.proceed( request );
Log.i( "Interceptor", "after request" );
return response;
}
}
... with this line: retrofit.client().interceptors().add( new MyInterceptor() );
I would expect the interceptor to run in an asynchronous thread, e.g. the one which is created for my asynchronous call. With retrofit 2.0.0-beta1 my code works. However with retrofit 2.0.0-beta2 I get the NetworkOnMainThreadException exception.
Is this a bug or an intential change? How do I fix my interceptor?
Update: this version of the interceptor works with retrofit 2.0.0-beta2 too:
public class MyInterceptor implements com.squareup.okhttp.Interceptor
{
@Override
public Response intercept( Chain chain ) throws IOException
{
Request request = chain.request();
Log.i( "Interceptor", "before request" );
return chain.proceed( request );
}
}
This allows for intercepting on the request. However, I have no idea on how to intercept on the response.
Hi there is some serious bug in that retrofit version. i get exception
If i switch to retrofit 2.0.0-beta1 everything works like charm