From 454b6c590fc76f356ed8181bb844f6dd15588c2c Mon Sep 17 00:00:00 2001
From: sz656r
Date: Thu, 28 Apr 2022 16:07:59 -0700
Subject: [PATCH] Cleanup user data when user stopped
1. During the quick user switch, the user status is changed from
STATE_STOPPING to STATE_BOOTING, the process android.process.core
(ContactsProvider2) was not closed, but the AccountManagerService
cleanup the user in stopping stage.
2. When the user is switched back, the old ContactsProvider2
process was used, but the client doesn't have the listener
registered for AccountManager any more.
3. This causes the ContactsProvider reloaded again when the phone
is connected, then duplicated contacts will show on the screen.
4. Solution is cleaning up the user data in onUserStopped.
Test: manual verification
Bug: 224818967
Change-Id: I8fb44e0e66ff73c055a548d57ff3d45ecc213f71
---
.../com/android/server/accounts/AccountManagerService.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/services/core/java/com/android/server/accounts/AccountManagerService.java b/services/core/java/com/android/server/accounts/AccountManagerService.java
index ab2147dff853b..d0503f3f3ddcb 100644
--- a/services/core/java/com/android/server/accounts/AccountManagerService.java
+++ b/services/core/java/com/android/server/accounts/AccountManagerService.java
@@ -168,8 +168,8 @@ public class AccountManagerService
}
@Override
- public void onUserStopping(@NonNull TargetUser user) {
- Slog.i(TAG, "onStopUser " + user);
+ public void onUserStopped(@NonNull TargetUser user) {
+ Slog.i(TAG, "onUserStopped " + user);
mService.purgeUserData(user.getUserIdentifier());
}
}