Согласно Справочнику разработчика Android uptimeMillis()
возвращает количество миллисекунд с момента загрузки, не считая времени, проведенного в глубоком сне .Я проверил реализацию uptimeMillis()
в своем коде, и это примерно так:
struct timespec t;
t.tv_sec = t.tv_nsec = 0;
clock_gettime(CLOCK_MONOTONIC, &t);
return (int64_t)(t.tv_sec)*1000000000LL + t.tv_nsec;
Насколько я знаю CLOCK_MONOTONIC
отсчитывает от некоторой неопределенной точки линейно, включая время сна,
Вот мои сомнения -
Если CLOCK_MONOTONIC
включает время сна, почему uptimeMillis()
не учитывает это?Если мое понимание неверно и CLOCK_MONOTONIC
не учитывает сон, то что я должен использовать, чтобы получить время работы системы, включая сон?
Что такое глубокий сон?Находится ли процессор на холостом ходу как глубокий сон?
Какое значение неопределенная точка в Linux?Не могли бы вы указать в коде, где эти часы запущены?