diff options
Diffstat (limited to 'services/java/com')
-rw-r--r-- | services/java/com/android/server/AccessibilityManagerService.java | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/services/java/com/android/server/AccessibilityManagerService.java b/services/java/com/android/server/AccessibilityManagerService.java index d38522c..77b6dd0 100644 --- a/services/java/com/android/server/AccessibilityManagerService.java +++ b/services/java/com/android/server/AccessibilityManagerService.java @@ -587,15 +587,17 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub intalledService.name); Service service = componentNameToServiceMap.get(componentName); - if (isEnabled && enabledServices.contains(componentName)) { - if (service == null) { + 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(); } } else { if (service != null) { + // clean up done in Service#onServiceDisconnected service.unbind(); - componentNameToServiceMap.remove(componentName); - services.remove(service); } } } |