Код: Выделить всё
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 М строк в день
Подробнее здесь: https://stackoverflow.com/questions/791 ... s-accuracy
Мобильная версия