android - greenrobot - eventbus subscribe
Callbacks de Fragment vs EventBus en Android (2)
Me he enfrentado con el problema. Mi Activity
es un contenedor de fragmentos, así que para comunicarme entre la actividad y los fragmentos utilicé el enfoque de Callback
común. En este caso, mi actividad tiene que implementar toneladas de interfaces de devolución de llamada según el recuento de fragmentos.
No me gusta hardcode y código ilegible. En mi caso, mi declaración de clase puede tomar varias líneas para enumerar todas las interfaces.
Estoy tratando de deshacerme de esto.
Hay otro enfoque es usar el patrón EventBus
.
En actividad
EventBus.getDefault().register(this);
En fragmento
EventBus.getDetault().post(new MyEvent(description));
Y maneja varios tipos de eventos en actividad.
¿Tal vez será mejor utilizar EventBus aquí en lugar de enfoque de devolución de llamada por defecto?
O tal vez es mi culpa que mi actividad contenga muchos fragmentos (Objeto de Dios) y es mejor usar actividades en vez de Fragmento.
Por favor, sugiérame qué enfoque es mejor?
Para una jerarquía simple de Actividad a uno Fragmento, la devolución de llamada es la decisión más simple de tomar. Pero piense en la Actividad que contiene un Fragmento, y el Fragmento contiene ViewPager
puede ViewPager
, y cada pestaña de ViewPager tiene Fragmentos A, B, C.
El Fragmento A, B, C irá a un viaje largo para enviar eventos a la actividad madre, y se puede perder la conectividad de la interfaz entre la actividad y los niños cuando se restauren durante los locos ciclos de vida del complejo Android Activity-Fragment . En este caso, eventbus como otto puede ser una buena opción.
El inconveniente del enfoque del bus de eventos es que es difícil mantener de dónde viene el evento. Por lo tanto, se recomienda mantener unos pocos remitentes.
Su enfoque de interface
es increíble, simplemente manténgase al día con ellos, y tal vez intente dividir / hacer que su interface
estática y agregue todos los pequeños pequeños void
y return method
a esa interfaz para que pueda implementar una y llamar a las funciones.
EventBus
? ¿ LocalBroadcastReceiver
? es una cuestión de preferencia y cuál crees que te conviene más, después de todo si manejas 10.000 solicitudes y odias tener 100 interface
, terminarás usando 1 y anidando 99.
y simplemente lo olvidé, es mejor tener mucho Fragment
lugar de Activity
porque al final del día, el Activity
vida de la Activity
es bastante difícil de mantener, en segundo lugar, no se puede controlar bien la Activity
todo en comparación con el Fragment
y el Fragment
es un buen esclavo, te sirve mejor
espero que sea valioso