From 2a6bcda03b7811cbe181ac789e16e779cbedc330 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Wed, 21 Sep 2011 15:07:05 -0700 Subject: Fix issue #5253941: ICS ignoring provider's android:process flag Provider was not being removed from the class map because it was using the wrong key. D'oh. Also a little cleanup. Change-Id: I318e8b1a265318ac1474e0a7f14f27f89f357505 --- .../android/server/am/ActivityManagerService.java | 56 ++++++++++++++-------- .../android/server/am/ContentProviderRecord.java | 8 ++-- 2 files changed, 41 insertions(+), 23 deletions(-) diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java index 41af137..ed960d6 100644 --- a/services/java/com/android/server/am/ActivityManagerService.java +++ b/services/java/com/android/server/am/ActivityManagerService.java @@ -1631,8 +1631,8 @@ public final class ActivityManagerService extends ActivityManagerNative } if (app.conProviders.size() > 0) { for (ContentProviderRecord cpr : app.conProviders.keySet()) { - if (cpr.app != null && cpr.app.lruSeq != mLruSeq) { - updateLruProcessInternalLocked(cpr.app, oomAdj, + if (cpr.proc != null && cpr.proc.lruSeq != mLruSeq) { + updateLruProcessInternalLocked(cpr.proc, oomAdj, updateActivityTime, i+1); } } @@ -3373,7 +3373,24 @@ public final class ActivityManagerService extends ActivityManagerNative for (i=0; i providers = new ArrayList(); + for (ContentProviderRecord provider : mProvidersByClass.values()) { + if (provider.info.packageName.equals(name) + && (provider.proc == null || evenPersistent || !provider.proc.persistent)) { + if (!doit) { + return true; + } + didSomething = true; + providers.add(provider); + } + } + + N = providers.size(); + for (i=0; i