Razones para que la hora del sistema iOS salte hacia atrás en un iPad mientras está desconectado

3

Mi equipo y yo nos encontramos con un error, que probablemente se debe a que la hora del sistema iOS no se incrementa de forma monótona, sino que salta hacia atrás. La diferencia de tiempo medida fue de unos -50 milisegundos. (Eso obviamente no es un segundo salto ni un problema de zona horaria).

Entendemos que los dispositivos iOS sincronizan su tiempo con los servidores NTP mientras están en línea. Pero la diferencia de tiempo negativa se observó al no tener ninguna conexión de red.

¿Hay alguna razón para que iOS actualice la hora del sistema sin conexión?

Publicaciones relevantes:

  • Ciertamente necesitaremos seguir este enfoque para medir los tiempos transcurridos. Sin embargo, nos gustaría entender qué fue lo que causó el salto.

  • Esta respuesta menciona razones para tales saltos de tiempo, pero ninguno de ellos parece aplicarse en mi caso.

  • Esta respuesta menciona cambios de tiempo significativos . Pero, ¿qué son cambios insignificantes?

Actualización: Después de 2 horas en modo avión, observamos un salto de tiempo de 637 ms en el pasado con System.DateTime.Now en un iPad Mini 2, mientras que CACurrentMediaTime siguió aumentando monótonamente. Aún no está claro por qué iOS debería hacer un salto tan significativo después de tanto tiempo sin actualizaciones NTP.

    
pregunta Falko 04.08.2017 - 06:01

1 respuesta

1

El reloj RTC se "ajusta" periódicamente para corregir su tiempo (por ejemplo, para tener en cuenta la desviación del reloj): esto sucede sin importar si está en línea o fuera de línea. Esto es estándar en los sistemas operativos modernos, no solo en iOS.

El error no está en su sistema operativo, sino en su aplicación. Si desea un reloj monótonamente creciente, no debe usar System.DateTime.Now.

Para seleccionar la función de temporizador / reloj correcta para su aplicación, debe determinar para qué quiere usar la hora y, a continuación, seleccionarla. Es decir. es una necesidad muy diferente de querer que la hora actual se muestre al usuario en una "aplicación de reloj" en comparación con la que se necesita para ejecutar un temporizador que se dispara cada 50 ms periódicamente en un juego.

    
respondido por el jksoegaard 07.08.2017 - 12:49

Lea otras preguntas en las etiquetas