diff options
| -rw-r--r-- | services/core/java/com/android/server/am/ContentProviderHelper.java | 6 |
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--) { |