diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java index 41af1373db06a..ed960d6d219f8 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