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:
Fred Quintana
2010-03-01 12:36:21 -08:00
parent 96d92f19c7
commit 82c5c4248a
2 changed files with 4 additions and 4 deletions

View File

@@ -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: "

View File

@@ -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();
}