Я могу определить время изменения часов, когда приложение находится на переднем плане, в фоновом режиме или убивает из Recent App
, используя android.intent.action.TIME_SET
, следуя здесь.
Однако, если я Force Stop
приложение в Настройки->Приложения Я больше не могу получать эту трансляцию.
В настоящее время я хочу, чтобы время смены пользователя возвращалось в мое приложение после ForceStop, поэтому я делаю
long deltaTimeBeetweenCurrentTimeAndTimeSinceReboot = System.currentTimeMillis() - SystemClock.elapsedRealtime();
long oldDelta = mSharedPreference.getDeltaTimeBeetweenCurrentTimeAndTimeSinceReboot();
if(deltaTimeBeetweenCurrentTimeAndRebootTime - oldDelta > 5000){
// clock time change
}
Идея в том, что я сохранил дельту между текущим временем (System.currentTimeMillis()
) и временем после перезагрузки (SystemClock.elapsedRealtime()
). Каждый раз, когда я открываю приложение, я сравниваю oldDelta и newDelta (кроме первой установки). Это хорошо работает в случае: Пользователь Fore Stop
приложение-> Изменить время-> вернуться в приложение.
Тем не менее, все еще есть 1 случай: пользовательское приложение Fore Stop
-> изменить время на часах -> перезагрузить устройство -> открыть мое приложение. В настоящее время я не могу использовать вышеуказанный метод, чтобы проверить, изменилось ли время часов, потому что после перезагрузки SystemClock.elapsedRealtime() будет сброшен. Как я могу определить, что время на часах изменилось в этом случае?
Любая помощь или предложение будут очень признательны.