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:

 @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

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 *; } 
  • Informe Leakcanary de pérdida de memoria usando Otto
  • NullPointerException con Otto y Dagger
  • Utilizando Otto, el método sólo se suscribe si lo llamo directamente a otra parte
  • IllegalArgumentException con Otto Event bus en la instancia Fragment
  • Problema de suscripción de bus de eventos (bus de eventos Otto - Guava)
  • ¿Cómo uso eficazmente un bus de eventos?
  • Utilizar Otto para actualizar un listadapter de un GcmListenerService
  • Utilizar Intents o un bus de eventos para comunicarse dentro de la misma aplicación
  • Reducción del número de clases de eventos al utilizar EventBus o Otto
  • RxAndroid, bus de eventos y ciclo de vida de la actividad
  • @Subscribe método llamado tiempo múltiple para el mismo evento
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.