From c42c0dd1c4e2f7a4abaac1b2c9a6344448f9db7a Mon Sep 17 00:00:00 2001 From: Jeff Hamilton Date: Thu, 3 Sep 2009 09:08:30 -0500 Subject: [PATCH] Fix the registration of the package changes broadcast receiver. Change-Id: Ib0b49153a0ec1af7c5a92753860df0f46064a7df --- core/java/android/content/pm/RegisteredServicesCache.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/core/java/android/content/pm/RegisteredServicesCache.java b/core/java/android/content/pm/RegisteredServicesCache.java index 342de2b43186a..f5f8f3088522a 100644 --- a/core/java/android/content/pm/RegisteredServicesCache.java +++ b/core/java/android/content/pm/RegisteredServicesCache.java @@ -54,7 +54,7 @@ public abstract class RegisteredServicesCache { private final String mAttributesName; // no need to be synchronized since the map is never changed once mService is written - private volatile Map> mServices; + volatile Map> mServices; // synchronized on "this" private BroadcastReceiver mReceiver = null; @@ -81,6 +81,7 @@ public abstract class RegisteredServicesCache { if (mReceiver == null) { synchronized (this) { mReceiver = new BroadcastReceiver() { + @Override public void onReceive(Context context, Intent intent) { mServices = generateServicesMap(); } @@ -91,6 +92,7 @@ public abstract class RegisteredServicesCache { intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED); intentFilter.addAction(Intent.ACTION_PACKAGE_CHANGED); intentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED); + intentFilter.addDataScheme("package"); mContext.registerReceiver(mReceiver, intentFilter); return true; } @@ -122,6 +124,7 @@ public abstract class RegisteredServicesCache { this.uid = uid; } + @Override public String toString() { return "ServiceInfo: " + type + ", " + componentName; } @@ -159,6 +162,7 @@ public abstract class RegisteredServicesCache { maybeUnregisterForPackageChanges(); } + @Override protected void finalize() throws Throwable { synchronized (this) { if (mReceiver != null) { @@ -169,7 +173,7 @@ public abstract class RegisteredServicesCache { super.finalize(); } - private Map> generateServicesMap() { + Map> generateServicesMap() { Map> services = Maps.newHashMap(); PackageManager pm = mContext.getPackageManager();