studio permission permisos internet google example editar androidmanifest activity android events event-handling listener addeventlistener

permission - permisos android manifest



Escucha de evento personalizado en la aplicaciĆ³n de Android (4)

Necesito configurar un escucha de eventos simple para actualizar un ListView vez en cuando. El problema es que no sé cómo podría generar un evento.

Sé que para eventos como presionar una tecla o un botón solo necesito implementar el Handler . Pero en este caso específico, realmente necesito generar el evento, que se disparará cada vez que se despierte otro hilo en funcionamiento de mi aplicación y actualice su lista de noticias de un canal RSS.

He hecho todo, pero me quedé atrapado aquí. ¿Puedo obtener alguna sugerencia o enlace con más información sobre cómo implementar esto?


  1. Definir una interfaz de devolución de llamada

    public interface NewsUpdateListener { void onNewsUpdate(<News data to be passed>); }

  2. Proporcionar un servicio de registro en el hilo de fondo que obtiene el feed RSS

    class <Background processing class name> { .... ArrayList<NewsUpdateListener> listeners = new ArrayList<NewsUpdateListener> (); .... public void setOnNewsUpdateListener (NewsUpdateListener listener) { // Store the listener object this.listeners.add(listener); } .... }

  3. Activa la devolución de llamada cuando haya noticias disponibles

    .... for (listener : listeners) { listener.onNewsUpdate(<News data to be passed>); } ....

  4. Registro de escucha en algún lugar durante la inicialización

    .... <class <Background processing class object>.registerListener ( new OnNewsUpdateListener() { onNewsUpdate(<News Data>) { // process news data runOnUIThread(new Runnable() { public void run() { // refresh list view } } } } ....



Puedes usar el ciclo de vida de Android para eso.

Crea una interfaz de señal, también conocida como tu evento

interface NewsUpdateSignal{ void newsUpdateHandler(Mydata data); }

Luego de registrarse en su actividad o en cualquier otro lugar que desee, podría haber muchos oyentes en la misma Signal .

class MyActivity extends Activity implements NewsUpdateSignal{ Signal<NewsUpateSignal> newsUpdateSignal = SignalsBag.inject(NewsUpateSignal.class); @Override protected void onCreate(Bundle savedInstanceState) { newsUpdateSignal.addListener(this); } @Override public void newsUpdateHandler(final Mydata data){ //Do something here } }

Y envíe la señal cuando lo necesite, desde donde lo necesite.

Class A{ Signal<NewsUpateSignal> newsUpdateSignal = SignalsBag.inject(NewsUpateSignal.class); void execute(){ // obtain the data somehow, and dispatch it, the callback will be invoked on the same thread newsUpdateSignal.dispatcher.newsUpdateHandler(data); } }

Descargo de responsabilidad: soy el autor del ciclo de vida de Android.


prueba esto:

interface MyHandlerInterface { void onHandle(Object obj) } class myListClass { MyHandlerInterface myHandler; public void setHandlerListener(MyHandlerInterface listener) { myHandler=listener; } protected void myEventFired(myObj) { if(myHandler!=null) myHandler.onHandle(myObj); } }