Add checks to prevent duplicate service starts (fixes #2099830)
Change-Id: Ic2d782c1b36459212f7f3441202220353eccd776
This commit is contained in:
parent
df002ccfac
commit
572f6058f4
@ -1285,7 +1285,9 @@ public class SyncManager extends Service implements Runnable {
|
||||
synchronized (sSyncToken) {
|
||||
Account acct = Account.restoreAccountWithId(this, m.mAccountKey);
|
||||
if (acct != null) {
|
||||
AbstractSyncService service;
|
||||
// Always make sure there's not a running instance of this service
|
||||
AbstractSyncService service = mServiceMap.get(m.mId);
|
||||
if (service == null) {
|
||||
service = new EasSyncService(this, m);
|
||||
service.mSyncReason = reason;
|
||||
if (req != null) {
|
||||
@ -1295,6 +1297,7 @@ public class SyncManager extends Service implements Runnable {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void stopServices() {
|
||||
synchronized (sSyncToken) {
|
||||
@ -1480,7 +1483,6 @@ public class SyncManager extends Service implements Runnable {
|
||||
deletedMailboxes.add(mailboxId);
|
||||
}
|
||||
}
|
||||
}
|
||||
// If so, stop them or remove them from the map
|
||||
for (Long mailboxId: deletedMailboxes) {
|
||||
AbstractSyncService svc = mServiceMap.get(mailboxId);
|
||||
@ -1495,6 +1497,7 @@ public class SyncManager extends Service implements Runnable {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
long nextWait = SYNC_MANAGER_HEARTBEAT_TIME;
|
||||
long now = System.currentTimeMillis();
|
||||
@ -1507,7 +1510,10 @@ public class SyncManager extends Service implements Runnable {
|
||||
try {
|
||||
while (c.moveToNext()) {
|
||||
long mid = c.getLong(Mailbox.CONTENT_ID_COLUMN);
|
||||
AbstractSyncService service = mServiceMap.get(mid);
|
||||
AbstractSyncService service = null;
|
||||
synchronized (sSyncToken) {
|
||||
service = mServiceMap.get(mid);
|
||||
}
|
||||
if (service == null) {
|
||||
// Check whether we're in a hold (temporary or permanent)
|
||||
SyncError syncError = mSyncErrorMap.get(mid);
|
||||
|
Loading…
Reference in New Issue
Block a user