Я разрабатываю приложение для Android и сталкиваюсь с проблемой с определением начальной загрузки системы. Я имею в виду, мне нужно измерить, сколько времени уже прошло с первой загрузки устройства.
Я знаю о решении с прослушиванием ACTION_BOOT_COMPLETED и сохраняю что-либо в SharedPreferences, но мне нужно другое решение, потому что в некоторых случаях это не работает. Может быть, есть системное свойство?
Использовать случай (выдержка из discussion)
- Имя файла, которое я получаю с сервера, содержит отметку времени
взято из
System.currentMillis()
- Я сравниваю эти временные метки, чтобы определить, в каком файле находится самый последний.
- Теперь пользователь меняет системное время на несколько месяцев вперед.
- Я все еще могу определить самый текущий файл, загруженный после того, как пользователь изменил системное время.
- Теперь пользователь меняет время на исходную настройку.
- Файл, загруженный на шаге 4, всегда выигрывает при сравнении временных меток.
Серебряная пуля для решения этой проблемы будет временной меткой, которая отсчитывает секунды с момента первой загрузки (после factory reset). Также как SystemClock.elapsedRealtime()
, но без reset после каждой загрузки. К сожалению, ответы до сих пор говорят нам, что этой серебряной пули не существует.
Однако многие ответы показывают множество вариантов решения этой проблемы. OneWorld123 прокомментировал каждый ответ, как это соответствует его потребностям.