Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Timertask o manejador

Hola Tengo una pregunta rápida. Digamos que quiero realizar alguna acción cada 10 segundos y no necesariamente necesito actualizar la vista. La pregunta es: ¿es mejor (me refiero a más eficiente y eficaz) para utilizar el temporizador con timertask como aquí:

final Handler handler = new Handler(); TimerTask timertask = new TimerTask() { @Override public void run() { handler.post(new Runnable() { public void run() { <some task> } }); } }; timer = new Timer(); timer.schedule(timertask, 0, 15000); } 

O simplemente un manejador con postdelayed

 final Handler handler = new Handler(); final Runnable r = new Runnable() { public void run() { <some task> } }; handler.postDelayed(r, 15000); 

También estaría agradecido si pudiera explicar cuándo utilizar qué enfoque y por qué uno de ellos es más eficiente que otro (si es que realmente lo es). Gracias.

  • Android Handler para la tarea repetida - se superpone? Temporizador-tarea VS manejador VS alarma-administrador
  • Tarea del temporizador VS Uso del administrador de alarmas en el servicio de Android
  • Lanzar null pointerException en Timer.Schedule ();
  • Cómo ejecutar la tarea Async repetidamente después de intervalos de tiempo fijos
  • Timer.scheduleAtFixedRate no se detiene cuando llamo cancelar
  • Cómo pausar y reanudar un TimerTask / Timer
  • Intentar invocar método virtual
  • Timer y TimerTask en Android
  • 2 Solutions collect form web for “Timertask o manejador”

    Handler es mejor que TimerTask .

    Java TimerTask y el TimerTask Android permiten programar tareas repetidas y retardadas en los subprocesos de fondo. Sin embargo, la literatura recomienda abrumadoramente Handler sobre TimerTask en Android (véase aquí , aquí , aquí , aquí , aquí y aquí ).

    Algunos de los problemas informados con TimerTask incluyen:

    • No se puede actualizar el subproceso de la interfaz de usuario
    • Pérdidas de memoria
    • No confiable (no siempre funciona)
    • Las tareas de larga ejecución pueden interferir con el próximo evento programado

    Ejemplo

    La mejor fuente para todo tipo de ejemplos de Android que he visto es en Codepath . Aquí hay un ejemplo de Handler de allí para una tarea de repetición.

     // Create the Handler object (on the main thread by default) Handler handler = new Handler(); // Define the code block to be executed private Runnable runnableCode = new Runnable() { @Override public void run() { // Do something here on the main thread Log.d("Handlers", "Called on main thread"); // Repeat this the same runnable code block again another 2 seconds handler.postDelayed(runnableCode, 2000); } }; // Start the initial runnable task by posting through the handler handler.post(runnableCode); 

    Relacionado

    • Handler vs Timer: ejecución de período fijo y desarrollo de android de ejecución de tasa fija

    Hay algunas desventajas de usar Timer

    Crea solo un solo hilo para ejecutar las tareas y si una tarea tarda demasiado en ejecutarse, otras tareas sufren. No maneja las excepciones lanzadas por las tareas y el hilo acaba de terminar, lo que afecta a otras tareas programadas y nunca se ejecutan

    Copiado de:

    TimerTask vs Thread.sleep vs Handler postDelayed – más preciso para llamar a la función cada N milisegundos?

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.