Saltar al contenido

Cómo detener a Handler en Android

Si encuentras algún detalle que no entiendes puedes dejarlo en la sección de comentarios y haremos todo lo necesario de ayudarte lo mas rápido que podamos.

Puedes usar esto para detener ese ejecutable

handler.removeCallbacks(calendarUpdater);

removeCallbacks(Ejecutable r) :Eliminar cualquier publicación pendiente de Runnable r que están en la cola de mensajes.

Editar

Puedes organizar tu código así

En tus onCreate() de MainActivity.java

Handler handler = new Handler();
refreshCalendar()

//outside  oncreate 

public void refreshCalendar()  
    calAdapter.refreshDays();
    calAdapter.notifyDataSetChanged();
    startRepeatingTask();
    calTitle.setText(android.text.format.DateFormat.format("MMMM yyyy", cal));


public Runnable calendarUpdater = new Runnable() 

    @Override
    public void run() 
        items.clear();
        allData = new ArrayList>();
        allData.clear();
        allData = db.showAllEvents();

        String currentDate = (String)android.text.format.DateFormat.format("MM/yyyy", cal);
        for(int i=0; i

Ahora solo puedes llamar startRepeatingTask() para publicar el mensaje y para dejar de usar stopRepeatingTask()

Heredado del siguiente enlace

¿Repetir una tarea con un retraso de tiempo?

Prueba debajo de la línea,

controlador.removeMessages(0);

Eliminar cualquier publicación pendiente de mensajes con código what que están en la cola de mensajes.

El controlador no tiene nada que ser detenido o empezado. Es solo una puerta de entrada para publicar mensajes y ejecutables en la cola de subprocesos. En su caso, está publicando un Runnable, que se ejecutará en el hilo de Handler. Tienes que detener ese Runnable. Entonces, pon un cheque en eso for bucle para romperlo.

También puedes usar removeCallbacks(Runnable r) sobre Handler para cancelar publicado Runnable's. Pero esto no eliminará esos Runnable's que ya se están ejecutando.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags :

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *