Otto eventbus para android se comporta de forma diferente en la versión de lanzamiento
Tengo una clase de servicio singleton que extrae datos de un servidor en un horario establecido. bus.post(new NewServerResponseEvent());
pronto como el cliente ha recibido los datos, i trigger bus.post(new NewServerResponseEvent());
( Http://square.github.io/otto/ )
Entonces en mis fragmentos hago esto:
- Otto (Bus de eventos), enviar fragmento de evento a fragmento pero no recibir
- ¿Cómo enviar un evento de Servicio a Actividad con el bus de eventos Otto?
- Model View Presenter con un EventBus, ¿cómo recuperar los eventos en Presenter?
- Mejores Prácticas para el Manejo de la Búsqueda
- ¿Qué métodos de ciclo de vida de actividad son los mejores para registrar / anular el registro en el bus de eventos?
@Override public void onResume() { super.onResume(); eventBus.register(this); } @Override public void onPause() { super.onPause(); eventBus.unregister(this); } @Subscribe public void handleNewServerData(NewServerResponseEvent e) { refreshView(); }
Todo funciona muy bien, siempre y cuando lo ejecute mientras se desarrolla en mi dispositivo de prueba. handleNewServerData()
pronto como construyo una versión de lanzamiento y poner eso en la tienda de juego, esa función handleNewServerData()
nunca se llama.
No puedo entender esto. Lo differnce que hacer para ejecutar todo eso como una construcción de liberación? ¿Hay quizá cosas que suceden en otro hilo que no puede publicar a mi suscriptor?
¿Puede alguien señalarme en la dirección correcta?
gracias por adelantado
- Otto / EventBus a través de múltiples procesos
- ¿Hay ventajas para cambiar a Otto de Broadcast events
- Pasar datos de Actividad a Fragmento usando Otto
- IllegalArgumentException cuando se utiliza Otto con un fragmento retenido
- Está utilizando la biblioteca de eventos como Otto o EventBus como una forma recomendada de manejar las relaciones entre Actividades, Fragmentos y subprocesos de fondo
- Cómo saber si un suscriptor de Otto está registrado
- Otto vs LocalBroadcast:
- Otto lanza "Objeto ya registrado" onResume en viewpager
Lo más probable es que su versión de lanzamiento se ejecute a través de ProGuard y deduce que ya que los métodos de suscriptor no se llaman directamente, pueden eliminarse con seguridad como código no utilizado. Otto invoca los métodos a través de la reflexión y ProGuard no puede ver eso.
Agregue lo siguiente a su archivo de configuración proguard para mantener los métodos anotados con @Subscribe
o @Produce
:
-keepattributes *Annotation* -keepclassmembers class ** { @com.squareup.otto.Subscribe public *; @com.squareup.otto.Produce public *; }
- ¿Los anuncios intersticiales de Android agregan dispositivo de prueba?
- Android: Cómo establecer el color de trazo para el vector dibujable mediante programación