Код: Выделить всё
object X {
private val startTime = Clock.System.now()
private val androidBootTime = startTime - SystemClock.elapsedRealtime().toDuration(DurationUnit.MILLISECONDS)
возвращает точность около ±10 секунд, т.е. разные вызовы приводят к разному времени загрузки для одного и того же сеанса загрузки.
Существует ли образец кода Kotlin, обеспечивающий время загрузки с точностью до микросекунды?
Что такое максимально достижимая точность времени загрузки Android?
Фактом также является то, что определить время запуска вашего приложения можно только по статической метке времени, все другие интеллектуальные средства не работают при кэшировании Android. и преднамеренная медлительность
Уникификаторы загрузки Android
Обновление от 29 октября 2024 г.:
есть счетчик загрузки Android 7 + уровень API 24+
Код: Выделить всё
int boot_count = Settings.Global.getInt(getContext().getContentResolver(),
Settings.Global.BOOT_COUNT);
Код: Выделить всё
cat /proc/sys/kernel/random/boot_id
c4dfb88f-2a9a-49cf-a649-291b4969db88
Код: Выделить всё
cat /proc/stat | grep btime
btime 1729814103
видимо, читается uptime -s
Код: Выделить всё
cat /proc/uptime
408824.96 624814.45
Путь вперед — это приемник загрузки и периодическое чтение унификатора, первое расчетное значение времени загрузки, которое считается авторитетным. эмпирические данные для выбора метода
Проблемы с пользовательским интерфейсом
Пользовательский интерфейс Android также может перезапуститься. Я обнаружил две ситуации в logcat:
- WATCHDOG уничтожает застрявший поток пользовательского интерфейса
- DeadSystemException
может быть полезно передать logcat в потоковую передачу SD-карта емкостью 150 МБ, 1 М строк на каждую. день
Выводы 29 октября 2024 г.
Я буду использовать унификатор загрузки и первое рассчитанное время загрузки
Это все, что может сделать Android.
.
счетчик загрузки работает до сброса 1…
UUID загрузки работает
/proc/uptime так же плохо, как Android SystemClock.elapsedRealtime
/proc/stat не читается без прав root, но btime имеет точность до секунды (в реальном Android с хорошей батареей)
241105 для Android 12 2024 г.:
- загрузка с неисправной резервной батареей может начаться с неточным временем
< ли>и /proc/stat btime явно плохиеКод: Выделить всё
uptime -s - после исправления системного времени через NTP из Интернета оба значения меняются
- поэтому, любая ссылка на время загрузки Android будет иметь погрешность в ±10 секунд из-за особенностей Android, даже если системное время очень точное. Полученное время может быть разным для разных попыток.
- однако унификаторы загрузки позволяют различать события загрузки.
- оценку времени загрузки нельзя получать до тех пор, пока системное время, как известно, является точным. Например, убедитесь, что точность времени Android превышает 2 минуты, подключившись к сайту https или обратившись к NTP PTP NITZ GPS.
- осуществляется только каждые 18 часов.
- исправляется только в том случае, если отклонение времени превышает 5 секунд.
- если NTP не может быть прочитан в течение 3 минут, Android ждет еще 18 часов.
- время можно попытаться обновить в рамках ограничений Android, выбрав «Настройки» — «Система» — «Дата и время» — «Установить время автоматически». с «Выкл.» на «Вкл.
если недавний запрос NTP по какой-то причине не удался, происходит ожидание 18 часов или установка времени вручную согласно замыслу тупых гуглеров». - это не так можно принудительно обновить время, кроме «Настройки» — «Система» — «Дата и время».
необходимо подписать Google или системное приложение.
- Android с неисправной резервной батареей может запуститься со временем, установленным на 1969 год.
- Затем используется время сборки операционной системы, которое может быть 2022 годом или около того.
- Это произойдет только после того, как временная метка будет получена из мобильной системы или Интернета. исправлено
Что действительно глупо со стороны гуглеров, так это ограничение в 5 секунд. В 2024 году должно быть 1 мс. Ничего не стоит
- Воздействие — это воспринимаемая пользователем погрешность времени в ±5 секунд, которая совершенно не нужна. Вот почему Android не показывает секунды: это сокрытие документов Пентагона.
- В результате любая временная метка, сообщаемая Android, составляет ±10 секунд.
- Если разрешена ошибка времени более 100 мс, заметят ли пользователи, Google?
Подробнее здесь: https://stackoverflow.com/questions/791 ... s-accuracy
Мобильная версия