2011-05-04 21 views
6

El script de mi cronómetro se ejecuta impecablemente en segundo plano en Android (contando el tiempo), pero el iOS 4.3.2 parece detener el guión. En iOS, el cronómetro se detiene en el momento en que la aplicación se envió a fondo.Cómo ejecutar un fondo de JavaScript en Phonegap en iPhone - para temporizador/cronómetro?

Necesito un cronómetro de ejecución (el tiempo aparece actualizado cada segundo en la vista) y algunos mensajes de alarma en puntos definidos en el tiempo.

El código para el cronómetro es de la siguiente manera:

 this.timer = window.setInterval(function(){ 
      instance.runtime += Stopwatch.INCREMENT; 
      instance.doDisplay(); 
     }, Stopwatch.INCREMENT); 

Soy consciente de soluciones nativas, pero me gustaría seguir con una solución de JavaScript por el bien de la compatibilidad entre plataformas.

+0

Hola He estado buscando por todas partes para detectar que una aplicación se está ejecutando en segundo plano. ¿Me puedes dar una recomendación? – xdumaine

+0

¿Funciona con precisión en Android, he intentado hacer código que se ejecuta cada 5 segundos, funciona en segundo plano, pero no en intervalos de 5 segundos fijos, creo que esto se debe a que la CPU duerme, entonces, ¿lo hizo preciso? Cómo ? –

Respuesta

6

Dado que setIntervals no funcionan en segundo plano, en su lugar utilizaría un setTimeout recursivo.
Lo que significa que no se puede controlar el tiempo con un + =, por lo que deberá usar una (nueva fecha) .getTime(); o Date.now() en su lugar.

this.timer = function myTimer() { 
    instance.currentTime = (new Date).getTime(); 
    instance.doDisplay(); 
    setTimeout(myTimer, Stopwatch.INCREMENT); 
} 

Si el setTimeout no vuelve a la vida cuando la aplicación lo hace, debería ser más fácil de reiniciar.

+0

buena idea, pero ¿cómo sabes cuándo la aplicación vuelve a estar en primer plano, por lo que puede reiniciarse automáticamente? – carillonator

Cuestiones relacionadas