Handle PhoneStatusBarPolicy user switch callbacks on main thread
Said callbacks poke around StatusBarIconController, which lives on
main thread and is not thread safe.
BUG=27047911
Bug:28613935
Change-Id: I880d79a237b03c06d72b5dff3db24bd60c7b8839
(cherry picked from commit 4f65092f5c95b89f48a48a916467b78d2a07ff89)
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java
index 823af36..d32ffa1 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java
@@ -411,20 +411,35 @@
new SynchronousUserSwitchObserver() {
@Override
public void onUserSwitching(int newUserId) throws RemoteException {
- mUserInfoController.reloadUserInfo();
+ mHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ mUserInfoController.reloadUserInfo();
+ }
+ });
}
@Override
public void onUserSwitchComplete(int newUserId) throws RemoteException {
- updateAlarm();
- profileChanged(newUserId);
- updateQuietState();
- updateManagedProfile();
+ mHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ updateAlarm();
+ profileChanged(newUserId);
+ updateQuietState();
+ updateManagedProfile();
+ }
+ });
}
@Override
public void onForegroundProfileSwitch(int newProfileId) {
- profileChanged(newProfileId);
+ mHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ profileChanged(newProfileId);
+ }
+ });
}
};