diff options
| author | Amith Yamasani <yamasani@google.com> | 2012-10-17 21:16:52 -0700 |
|---|---|---|
| committer | Amith Yamasani <yamasani@google.com> | 2012-10-19 16:23:30 -0700 |
| commit | db6a14cc85cede0769735fdac4da70766989a3ce (patch) | |
| tree | 746e34df3a9ae15f9e1934033f8d907173fbd725 /core/java/android/content/SyncManager.java | |
| parent | ba0372db366e63fa928ba83f3ad8c064c51ac8e0 (diff) | |
Fix crashes when quickly adding and removing users
Make USER_REMOVED an ordered broadcast and send it before the user's
state is completely removed from the system. This gives services the
opportunity to clean up their state, while still having access to the
user's directory and UserInfo object (such as serial number).
Tell SyncManager to skip over dying/partially created users.
Improve UserManager tests, waiting for users to be removed fully.
Bug: 7382252
Change-Id: I93cfb39c9efe6f15087bf83c569a2d154ef27168
Diffstat (limited to 'core/java/android/content/SyncManager.java')
| -rw-r--r-- | core/java/android/content/SyncManager.java | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/core/java/android/content/SyncManager.java b/core/java/android/content/SyncManager.java index bb0c68642d92..05bab9c2d691 100644 --- a/core/java/android/content/SyncManager.java +++ b/core/java/android/content/SyncManager.java @@ -265,7 +265,9 @@ public class SyncManager { } private void doDatabaseCleanup() { - for (UserInfo user : mUserManager.getUsers()) { + for (UserInfo user : mUserManager.getUsers(true)) { + // Skip any partially created/removed users + if (user.partial) continue; Account[] accountsForUser = AccountManagerService.getSingleton().getAccounts(user.id); mSyncStorageEngine.doDatabaseCleanup(accountsForUser, user.id); } |
