Programación de Android Timer vs. scheduleAtFixedRate

Estoy escribiendo una aplicación de Android que graba audio cada 10 minutos. Estoy usando un temporizador para hacer eso. Pero, ¿cuál es la diferencia entre schedule y scheduleAtFixedRate? ¿Hay algún beneficio en el rendimiento al usar uno sobre el otro?

4 Solutions collect form web for “Programación de Android Timer vs. scheduleAtFixedRate”

La diferencia se explica mejor por esta documentación que no sea de Android :

Los temporizadores de tasa fija ( scheduleAtFixedRate() ) se basan en la hora de inicio (por lo que cada iteración se ejecutará en startTime + iterationNumber * delayTime ).

En la ejecución de tasa fija, cada ejecución está programada en relación con el tiempo de ejecución programado de la ejecución inicial. Si una ejecución se retrasa por cualquier motivo (como recolección de basura u otra actividad de fondo), dos o más ejecuciones se producirán en rápida sucesión para "ponerse al día".

Los temporizadores de retardo fijo ( schedule() ) se basan en la ejecución anterior (por lo que cada iteración se ejecutará en lastExecutionTime + delayTime ).

En la ejecución de retardo fijo, cada ejecución se programa en relación con el tiempo de ejecución real de la ejecución anterior. Si una ejecución se retrasa por cualquier motivo (como recolección de basura u otra actividad de fondo), las ejecuciones posteriores se retrasarán también.

Aparte de esto, no hay diferencia. Tampoco encontrarás una diferencia significativa en el rendimiento.

Si está utilizando esto en un caso en el que desea permanecer sincronizado con otra cosa, deberá usar scheduleAtFixedRate() . El retardo de schedule() puede derivar e introducir error.

Un método simple schedule() se ejecutará de una vez mientras el método scheduleAtFixedRate() toma y el parámetro extra que es para la repetición de la tarea una y otra vez en un intervalo de tiempo específico.

Mirando la sintaxis:

 Timer timer = new Timer(); timer.schedule( new performClass(), 30000 ); 

Esto va a realizarse una vez después de que termine el Intervalo del Período de Tiempo de 30 Segundos. Una especie de tiempo-acción.

 Timer timer = new Timer(); //timer.schedule(task, delay, period) //timer.schedule( new performClass(), 1000, 30000 ); // or you can write in another way //timer.scheduleAtFixedRate(task, delay, period); timer.scheduleAtFixedRate( new performClass(), 1000, 30000 ); 

Esto va a comenzar después de 1 segundo y se repetirá en cada intervalo de tiempo de 30 segundos.

Según el código java.util.Timer.TimerImpl.TimerHeap

 // this is a repeating task, if (task.fixedRate) { // task is scheduled at fixed rate task.when = task.when + task.period; } else { // task is scheduled at fixed delay task.when = System.currentTimeMillis() + task.period; } 

 java.util.Timer.schedule(TimerTask task, long delay, long period) 

Establecerá task.fixedRate = false;

 java.util.Timer.scheduleAtFixedRate(TimerTask task, long delay, long period) 

Establecerá task.fixedRate = true;

Btw El temporizador no funciona cuando la pantalla está apagada. Debería utilizar AlarmManager.

Hay muestra: http://developer.android.com/training/scheduling/alarms.html

En caso de programación sólo se ejecuta una vez cuando llegaron los tiempos apropiados. Por otro lado, scheduleAtFixedRate tiene un período de parámetro adicional que contiene la cantidad de tiempo en milisegundos entre las siguientes ejecuciones.

Más información puede encontrar aquí

http://developer.android.com/reference/java/util/Timer.html#schedule(java.util.TimerTask , largo)

  • Timertask o manejador
  • ¿Cómo implementar una pantalla de bienvenida con una barra de progreso? androide
  • Mostrar temporizador en texto contiene días, horas, minutos y segundos en android
  • Actualizar TextView utilizando Timer y ArrayList
  • Recibir un valor de cadena en MainActivity de SecondActivity y luego contarlo hacia abajo
  • Cómo mostrar el temporizador en android
  • Java cronometrar, System.nanoTime () batear que System.currentTimeMillis () pero persiste sobre sueño?
  • Hacer un temporizador de intervalo en Java android
  • OnPause / onResume problemas de actividad
  • ¿Cómo cambiar el retraso del hilo de sueño / temporizador en android durante el tiempo de ejecución?
  • CountDownTimer en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.