summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/am/ContentProviderHelper.java6
1 files changed, 6 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/am/ContentProviderHelper.java b/services/core/java/com/android/server/am/ContentProviderHelper.java
index afb7bb447be1..13145214c1c1 100644
--- a/services/core/java/com/android/server/am/ContentProviderHelper.java
+++ b/services/core/java/com/android/server/am/ContentProviderHelper.java
@@ -1806,10 +1806,12 @@ public class ContentProviderHelper {
ActivityManagerService.WAIT_FOR_CONTENT_PROVIDER_TIMEOUT_MSG, cpr);
}
final int userId = UserHandle.getUserId(cpr.uid);
+ boolean removed = false;
// Don't remove from provider map if it doesn't match
// could be a new content provider is starting
if (mProviderMap.getProviderByClass(cpr.name, userId) == cpr) {
mProviderMap.removeProviderByClass(cpr.name, userId);
+ removed = true;
}
String[] names = cpr.info.authority.split(";");
for (int j = 0; j < names.length; j++) {
@@ -1817,8 +1819,12 @@ public class ContentProviderHelper {
// could be a new content provider is starting
if (mProviderMap.getProviderByName(names[j], userId) == cpr) {
mProviderMap.removeProviderByName(names[j], userId);
+ removed = true;
}
}
+ if (removed && cpr.proc != null) {
+ cpr.proc.mProviders.removeProvider(cpr.info.name);
+ }
}
for (int i = cpr.connections.size() - 1; i >= 0; i--) {