Motivi per cui il tempo del sistema iOS è saltato all'indietro su un iPad mentre era offline

3

Il mio team e io ci siamo imbattuti in un bug, che è probabilmente causato dal tempo di sistema iOS non incrementato monotonicamente, ma dal salto all'indietro. La differenza di tempo misurata era di circa -50 millisecondi. (Ovviamente non si tratta di un problema di secondo o di fuso orario.)

Sappiamo che i dispositivi iOS sincronizzano il loro tempo con i server NTP mentre sono online. Ma la differenza di orario negativa è stata osservata senza avere alcuna connessione di rete.

Ci sono ragioni per cui iOS aggiorna l'orario del sistema mentre è offline?

Post pertinenti:

  • Dovremo sicuramente seguire l'approccio per misurare i tempi trascorsi. Tuttavia, vorremmo capire cosa stava causando il salto.

  • Questa risposta indica i motivi di tali salti temporali, ma nessuno di essi sembra essere applicabile nel mio caso.

  • Questa risposta menziona variazioni di tempo significative . Ma quali sono le modifiche insignificanti?

Aggiornamento: Dopo 2 ore in modalità aereo abbiamo osservato un salto temporale di 637 ms nel passato con System.DateTime.Now su un iPad Mini 2, mentre CACurrentMediaTime ha continuato ad aumentare monotonicamente. Non è ancora chiaro il motivo per cui iOS dovrebbe fare un salto così significativo dopo così tanto tempo senza aggiornamenti NTP.

    
posta Falko 04.08.2017 - 06:01
fonte

1 risposta

1

L'orologio RTC viene "ottimizzato" periodicamente per correggere il suo tempo (ad esempio per tenere conto della deriva dell'orologio) - questo accade non importa se sei online o offline. Questo è standard sui sistemi operativi moderni, non solo su iOS.

Il bug non è nel tuo sistema operativo, ma nella tua app. Se si desidera un orologio monotonicamente crescente, non si dovrebbe usare System.DateTime.Now.

Per selezionare la funzione timer / orologio corretta per la tua app, devi determinare per che cosa vuoi usare il tempo - e poi selezionare di conseguenza. Cioè è un bisogno molto diverso di volere che l'ora corrente venga mostrata all'utente in una "app di orologio" rispetto al tempo necessario per eseguire un timer che si accenderà ogni 50 ms periodicamente in un gioco.

    
risposta data 07.08.2017 - 12:49
fonte

Leggi altre domande sui tag