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

  • Traducir animación
  • Android - crear listview completamente desde xml
  • ¿Por qué no se está copiando libgnustl_shared.so desde mi APK?
  • Cómo configurar el color para la vista de imagen en Android
  • Cómo detectó las referencias de Android
  • Cómo acortar el período de reintento de descarga de almacenamiento de Firebase en Error de red
  •  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.

  • Cómo mostrar el mensaje de brindis desde el hilo de fondo
  • El mejor método para descargar la imagen de url en Android
  • Cocos2d-x: Cómo portar un proyecto Cocos2d-x desarrollado con XCode a Android (vía Eclipse)?
  • No se puede iniciar la intención del servicio
  • El selector de dispositivos de Android Studio se muestra antes de completar Gradle Build
  • Después de la actualización de Google Play Service a la versión 13, recibí un error
  • 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.