From 563d78401dc6ed58dd606ac744555151f1cc0ef1 Mon Sep 17 00:00:00 2001 From: Svetoslav Ganov Date: Thu, 6 Jan 2011 17:40:26 -0800 Subject: [PATCH] (cherrypick from master) 3322879 Device soft reboots on enabling and disabling accessibility settings Change-Id: I7cf6f9da010113d591bd0eb2c59f7a4b92a38764 --- .../server/AccessibilityManagerService.java | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/services/java/com/android/server/AccessibilityManagerService.java b/services/java/com/android/server/AccessibilityManagerService.java index 77b6dd0b39dfd..393beda35889e 100644 --- a/services/java/com/android/server/AccessibilityManagerService.java +++ b/services/java/com/android/server/AccessibilityManagerService.java @@ -532,11 +532,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub for (int i = 0, count = services.size(); i < count; i++) { Service service = services.get(i); - service.unbind(); - mComponentNameToServiceMap.remove(service.mComponentName); } - services.clear(); } /** @@ -588,15 +585,18 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub Service service = componentNameToServiceMap.get(componentName); if (isEnabled) { - if (enabledServices.contains(componentName) && service == null) { - new Service(componentName).bind(); - } else if (!enabledServices.contains(componentName) && service != null) { - // clean up done in Service#onServiceDisconnected - service.unbind(); + if (enabledServices.contains(componentName)) { + if (service == null) { + service = new Service(componentName); + } + service.bind(); + } else if (!enabledServices.contains(componentName)) { + if (service != null) { + service.unbind(); + } } } else { if (service != null) { - // clean up done in Service#onServiceDisconnected service.unbind(); } } @@ -679,6 +679,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub public void unbind() { if (mService != null) { mContext.unbindService(this); + mComponentNameToServiceMap.remove(mComponentName); + mServices.remove(this); } }