From 3ecd5f437580e49d80beecd29489d5fb1f7a7db0 Mon Sep 17 00:00:00 2001 From: Fred Quintana Date: Thu, 17 Sep 2009 12:42:35 -0700 Subject: [PATCH] - Make the AccountManagerService delete accounts that have no Authenticator, both when the package is removed and when the phone is booted. - add the ability to register with the RegisteredServicesCache to be notified when the set of Authenticators changes. --- api/current.xml | 19 +++++++ .../accounts/AccountManagerService.java | 53 ++++++++++++++++--- .../content/pm/RegisteredServicesCache.java | 14 +++++ .../pm/RegisteredServicesCacheListener.java | 11 ++++ 4 files changed, 89 insertions(+), 8 deletions(-) create mode 100644 core/java/android/content/pm/RegisteredServicesCacheListener.java diff --git a/api/current.xml b/api/current.xml index e64726a4d15c5..b348555987dff 100644 --- a/api/current.xml +++ b/api/current.xml @@ -42572,6 +42572,25 @@ > + + + + { private final String mMetaDataName; private final String mAttributesName; + public RegisteredServicesCacheListener getListener() { + return mListener; + } + + public void setListener(RegisteredServicesCacheListener listener) { + mListener = listener; + } + + private volatile RegisteredServicesCacheListener mListener; + // no need to be synchronized since the map is never changed once mService is written volatile Map> mServices; @@ -84,6 +94,10 @@ public abstract class RegisteredServicesCache { @Override public void onReceive(Context context, Intent intent) { mServices = generateServicesMap(); + RegisteredServicesCacheListener listener = mListener; + if (listener != null) { + listener.onRegisteredServicesCacheChanged(); + } } }; } diff --git a/core/java/android/content/pm/RegisteredServicesCacheListener.java b/core/java/android/content/pm/RegisteredServicesCacheListener.java new file mode 100644 index 0000000000000..8cf15e4287884 --- /dev/null +++ b/core/java/android/content/pm/RegisteredServicesCacheListener.java @@ -0,0 +1,11 @@ +package android.content.pm; + +/** + * Listener for changes to the set of registered services managed by a RegisteredServicesCache. + */ +public interface RegisteredServicesCacheListener { + /** + * Invoked when the registered services cache changes. + */ + void onRegisteredServicesCacheChanged(); +}