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();
+}