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)

  • Android relanzando temporizadores después de que se cancelen
  • CountDownTimer.cancel () no funciona en Android
  • Use CountDown Timer o rodar mi propio basado en Handler en Android
  • ¿Cómo puedo cancelar desde Device.StartTimer?
  • Manejador o temporizador android
  • Cambiar horario scheduleAtFixedRate
  • CountDownTimer en Android
  • Timer y TimerTask en Android
  • Android ViewPager cambia automáticamente la página
  • ¿Cómo comprobar si un temporizador todavía está funcionando o no?
  • Android: implementa un temporizador de intervalo de 1 segundo antes de llamar a una función
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.