Fix bug in NetworkTimeUpdateService

Reset try again counter after a successful NTP refresh
Reset alarm to run at exactly mPollingIntervalMs after the last
NTP update.

Bug: b/217357882
Test: Existing unit tests still pass.
Change-Id: Ibee93ab305f5bcaa149007c15d12c583227678b9
This commit is contained in:
Kanyinsola
2022-02-25 14:54:33 +00:00
parent faedb36fb7
commit fe7af3e5d2

View File

@@ -171,7 +171,9 @@ public class NetworkTimeUpdateService extends Binder {
>= mPollingIntervalMs) {
if (DBG) Log.d(TAG, "Stale NTP fix; forcing refresh");
boolean isSuccessful = mTime.forceRefresh();
if (!isSuccessful) {
if (isSuccessful) {
mTryAgainCounter = 0;
} else {
String logMsg = "forceRefresh() returned false: cachedNtpResult=" + cachedNtpResult
+ ", currentElapsedRealtimeMillis=" + currentElapsedRealtimeMillis;
@@ -188,7 +190,8 @@ public class NetworkTimeUpdateService extends Binder {
&& cachedNtpResult.getAgeMillis(currentElapsedRealtimeMillis)
< mPollingIntervalMs) {
// Obtained fresh fix; schedule next normal update
resetAlarm(mPollingIntervalMs);
resetAlarm(mPollingIntervalMs
- cachedNtpResult.getAgeMillis(currentElapsedRealtimeMillis));
// Suggest the time to the time detector. It may choose use it to set the system clock.
TimestampedValue<Long> timeSignal = new TimestampedValue<>(