fix a bug where if a syncmanager gets back a SyncAlreadyInProgress error
it immediately reschedules another sync, thus burning up the battery if the sync is in progress for a while. http://b/issue?id=2477901
This commit is contained in:
@@ -819,7 +819,7 @@ public class SyncManager implements OnAccountsUpdateListener {
|
||||
}
|
||||
scheduleSyncOperation(new SyncOperation(operation.account, operation.syncSource,
|
||||
operation.authority, operation.extras,
|
||||
DELAY_RETRY_SYNC_IN_PROGRESS_IN_SECONDS));
|
||||
DELAY_RETRY_SYNC_IN_PROGRESS_IN_SECONDS * 1000));
|
||||
} else if (syncResult.hasSoftError()) {
|
||||
if (isLoggable) {
|
||||
Log.d(TAG, "retrying sync operation because it encountered a soft error: "
|
||||
|
||||
@@ -19,7 +19,7 @@ public class SyncOperation implements Comparable {
|
||||
public SyncStorageEngine.PendingOperation pendingOperation;
|
||||
|
||||
public SyncOperation(Account account, int source, String authority, Bundle extras,
|
||||
long delay) {
|
||||
long delayInMs) {
|
||||
this.account = account;
|
||||
this.syncSource = source;
|
||||
this.authority = authority;
|
||||
@@ -33,12 +33,12 @@ public class SyncOperation implements Comparable {
|
||||
removeFalseExtra(ContentResolver.SYNC_EXTRAS_EXPEDITED);
|
||||
removeFalseExtra(ContentResolver.SYNC_EXTRAS_OVERRIDE_TOO_MANY_DELETIONS);
|
||||
final long now = SystemClock.elapsedRealtime();
|
||||
if (delay < 0) {
|
||||
if (delayInMs < 0) {
|
||||
this.expedited = true;
|
||||
this.earliestRunTime = now;
|
||||
} else {
|
||||
this.expedited = false;
|
||||
this.earliestRunTime = now + delay;
|
||||
this.earliestRunTime = now + delayInMs;
|
||||
}
|
||||
this.key = toKey();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user