¿Cómo aumentar el tiempo de espera para las solicitudes de reacondicionamiento en robospice android?

He implementado robospice en mi proyecto y uso retrofit para todas las llamadas api. Para algunas de las solicitudes, necesito aumentar el tiempo de espera, por favor, hágamelo saber cómo puedo hacer eso?

Realmente estoy utilizando el servicio que extiende RetrofitGsonSpiceService. El código de mi clase de servicio está abajo:

Clase pública MyService extends RetrofitGsonSpiceService {

@Override public void onCreate() { super.onCreate(); addRetrofitInterface(MyInterface.class); } @Override public CacheManager createCacheManager(Application application) throws CacheCreationException { CacheManager cacheManager = new CacheManager(); ObjectPersisterFactory persistFactory = new RetrofitObjectPersisterFactory(application, getConverter(), getCacheFolder()); persistFactory.setAsyncSaveEnabled(true); cacheManager.addPersister(persistFactory); return cacheManager; } @Override protected String getServerUrl() { return Utils.getBaseUrl(); } @Override protected RestAdapter.Builder createRestAdapterBuilder() { RestAdapter.Builder builder = new RestAdapter.Builder().setRequestInterceptor( new RequestInterceptor() { @Override public void intercept(RequestFacade request) { request.addHeader(Const.HEADER_DEVICE_TYPE_KEY, Const.HEADER_DEVICE_TYPE_VALUE); } } ); builder.setEndpoint(getServerUrl()).setConverter(getConverter()); return builder; } 

}

Me tropecé aquí con una pregunta similar y finalmente encontré la respuesta en otra parte. Si hubiese existido un ejemplo más completo, habría ahorrado tiempo, así que volví a escribir lo que funcionó para mí en caso de que ayude a otros:

Adaptador con mayor tiempo de espera de lectura

  // create client OkHttpClient okHttpClient = new OkHttpClient(); okHttpClient.setReadTimeout(60 * 1000, TimeUnit.MILLISECONDS); // create rest adapter using the client above RestAdapter restAdapter = new RestAdapter.Builder() .setEndpoint(getBaseApiUrl()) .setClient(new OkClient(okHttpClient)) // this gson converter below is optional. We use it for parsing dates and enums .setConverter(new GsonConverter(createApiGson())) .setLogLevel(getRetrofitLogLevel()) .build(); 

NOTA: para nosotros, getBaseApiUrl() devuelve algo así como: https://some.company.com/api/
Y getRetrofitLogLevel() devuelve RestAdapter.LogLevel.FULL o RestAdapter.LogLevel.NONE dependiendo del sabor de la aplicación que se construye.

Por último, estas son las principales dependencias que hacen que todo funcione:

Dependencias clave

 dependencies { ... compile "com.squareup.retrofit:retrofit:1.5.0" compile "com.squareup.retrofit:retrofit-mock:1.5.0" compile "com.squareup.okhttp:okhttp:1.5.4" compile "com.google.code.gson:gson:2.2.4" ... } 

En su servicio de extensión de RetrofitSpiceService , tendrá que sobrescribir createRestAdapterBuilder() .

  @Override protected Builder createRestAdapterBuilder() { Builder builder = super.createRestAdapterBuilder(); builder.setClient(new CustomClient()); return builder; } 

CustomClient es la clase que usted necesita escribir para proveer sus propios tiempos de espera. Si está usando OkHttp, eche un vistazo al predeterminado OkClient para referencia: https://github.com/square/retrofit/blob/43b7ea14e5aca1d710deccb95b79484b03e99bb9/retrofit/src/main/java/retrofit/client/OkClient.java

No sé acerca de robospice pero con retrofit 2+ y okhttp3 + debe establecer un nuevo cliente como este.

 OkHttpClient okHttpClient = new OkHttpClient(); Retrofit retrofit = new Retrofit.Builder() .baseUrl(Constantes.URL_DOMAIN) .addConverterFactory(GsonConverterFactory.create()) .client(okHttpClient.newBuilder().connectTimeout(Constantes.TIMEOUT, TimeUnit.SECONDS).readTimeout(Constantes.TIMEOUT, TimeUnit.SECONDS).writeTimeout(Constantes.TIMEOUT, TimeUnit.SECONDS).build()) .build(); 

Importa esto en tu módulo build.gradle:

 compile 'com.squareup.retrofit2:retrofit:2.0.0-beta3' compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta3' compile 'com.squareup.okhttp3:okhttp:3.0.0-RC1' 
  • Objeto de almacenamiento Robospice que extiende ArrayList en la base de datos a través de Ormlite
  • Uso de RoboSpice y RxJava
  • Robospice - Mantenga el servicio de especias continuando funcionando cuando cambia la actividad
  • OnStart of new Actividad se llama antes de onStop de padre
  • Borrar datos antiguos de caché con robospice ormlite
  • Retrofit / Robospice: ¿Obtener los encabezados de respuesta de una solicitud exitosa?
  • RoboSpice y Jsoup
  • ¿Cómo se genera la clase con T y List <T>
  • Qué es la Biblioteca RoboSpice en android
  • Retrofit: parámetros de consulta múltiples en el comando @GET?
  • Uso de RoboSpice en un BroadcastReceiver
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.