¿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:
- Kotlin: ¿Podemos usar @Subscribe de EventBus (GreenRobot) en Kotlin?
- ¿Cómo detectar rápidamente el código fuente no utilizado de greenrobot EventBus?
- El evento de GreenRobot no puede ver anotaciones, "ningún método público"
- Bus de eventos y ciclo de vida de los componentes ui de android
- IPC en Android usando GreenRobot eventbus
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); }
- GreenBroot EventBus no pudo enviar el evento
- 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
- El bus de eventos de Android no funciona con dos escuchas de eventos
- ¿Qué métodos de ciclo de vida de actividad son los mejores para registrar / anular el registro en el bus de eventos?
- Excepción de puntero nulo con Fragmentos y EventBus
- Fragmento de bus de eventos
- Cómo utilizar greenrobot para pasar datos a la actividad o fragmento que no se ha inicializado todavía?
- EventBus, register y registerSticky método
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.
- ¿Por qué el objeto cripto es necesario para la autenticación de la huella digital android?
- Volley Android, cómo pasar post parámetros de forma dinámica