¿El uso del autobús siempre que la vista no se ha iniciado todavía?

Tengo este problema desde que cambié a EventBus (lo mismo ocurriría con cualquier biblioteca de bus) donde siempre que quiero realizar una acción cuando la vista no está lista, entonces voy a tener el error de que el bus no está registrado;

E/EventBus: Could not dispatch event: class com.android.greenfield.Action to subscribing class class com.android.greenfield.GreenStore 

Ocurre cuando quiero disparar una Acción en aquellas partes del ciclo de vida:

Cuando tomo una foto / video :

 @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { actionsCreator.uploadFile(filepath, "image/jpg"); // ... (Error here because the bus isn't yet registered) } 

O aquí cuando recibo un NFC TAG :

 @Override public void onNewIntent(Intent intent) { actionsCreator.uploadNfcTag(intent); // ... (Error here because the bus isn't yet registered) } 

Si sigo la forma normal o EventBus como dicen en su documento, debo register y unregister esta manera:

 @Override public void onStart() { super.onStart(); EventBus.getDefault().register(this); } @Override public void onStop() { EventBus.getDefault().unregister(this); super.onStop(); } 

La única solución que encontré hasta ahora es registrar y anular el registro cuando quiero realizar una acción que está entre el ciclo de vida onStart() y onStop() … Pero está sucio y me siento mal

 @Override public void onNewIntent(Intent intent) { dispatcher.register(GreenStore); actionsCreator.uplaodNfcTag(intent); dispatcher.register(GreenStore); } 

Este es el mismo problema que el motivo por el que obtiene IllegalStateException si está intentando mostrar un fragmento de diálogo en onActivityResult . Simplemente, se ejecuta antes de que la interfaz de usuario vuelva a la vida.

Soluciones sencillas:

1

 Handler handler = new Handler(Looper.getMainLooper()); handler.post(new Runnable() { @Override public void run() { actionsCreator.uploadFile(filepath, "image/jpg"); } }); 

2.) mientras el bus está pausado (esto es algo que manejarías manualmente), debes hacer cola de espera en los eventos y, cuando no se retendan, ejecútelos.

  • Error de EventBus de GreenRobot en fragmentos: No hay suscriptores registrados en la clase de evento
  • Greenbot Eventbus 3.0: ¿Cuál es la diferencia entre onEvent, onEventMainThread, onEventBackgroundThread y onEventAsync?
  • RecyclerView RecyclerViewDataObserver no estaba registrado
  • Eventbus de Greenrobot: Dos Fragmentos llamando tareas asíncronas
  • Diferencias entre Greenrobot EventBus y el EventBus de Guava
  • La publicación de EventBus no puede actualizar el título de la barra de herramientas. ¿Alguna solución?
  • EventBus - La clase Subscriber y sus superclases no tienen métodos públicos con la anotación @subscribe
  • ¿Puedo usar GreenBox EventBus para la comunicación entre la actividad y el servicio?
  • La clase de suscriptor no tiene métodos públicos llamados Evento
  • Eventos recibidos varias veces - Greenrobot eventbus
  • ¿Es bueno reemplazar el receptor de radiodifusión con Greenrobot Eventbus para activar funciones basadas en eventos y la transferencia de datos de servicio a actividad?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.