summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Olawale Ogunwale <ogunwale@google.com> 2015-05-15 16:19:46 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2015-05-15 16:19:46 +0000
commitd80f23e5c3bf9d76d249e63a897ef87ffcb1e06c (patch)
tree9da537ecb404d5ad8c4b0fd25b2d5b9d7bf8d2f9
parent7b566da55afad480622c328d658f0e654019688d (diff)
parent691a1737a34bb3afe6f8405b5fb26f31aaa5b4b2 (diff)
Merge "Also restart provider if there is external handle."
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java4
-rw-r--r--services/core/java/com/android/server/am/ContentProviderRecord.java4
2 files changed, 6 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 95a08677bf06..01858a456277 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -15008,7 +15008,7 @@ public final class ActivityManagerService extends ActivityManagerNative
ContentProviderRecord cpr = app.pubProviders.valueAt(i);
final boolean always = app.bad || !allowRestart;
boolean inLaunching = removeDyingProviderLocked(app, cpr, always);
- if ((inLaunching || always) && !cpr.connections.isEmpty()) {
+ if ((inLaunching || always) && cpr.hasConnectionOrHandle()) {
// We left the provider in the launching list, need to
// restart it.
restart = true;
@@ -15152,7 +15152,7 @@ public final class ActivityManagerService extends ActivityManagerNative
for (int i = mLaunchingProviders.size() - 1; i >= 0; i--) {
ContentProviderRecord cpr = mLaunchingProviders.get(i);
if (cpr.launchingApp == app) {
- if (!alwaysBad && !app.bad && !cpr.connections.isEmpty()) {
+ if (!alwaysBad && !app.bad && cpr.hasConnectionOrHandle()) {
restart = true;
} else {
removeDyingProviderLocked(app, cpr, true);
diff --git a/services/core/java/com/android/server/am/ContentProviderRecord.java b/services/core/java/com/android/server/am/ContentProviderRecord.java
index a37249da39fd..dceadf453c28 100644
--- a/services/core/java/com/android/server/am/ContentProviderRecord.java
+++ b/services/core/java/com/android/server/am/ContentProviderRecord.java
@@ -139,6 +139,10 @@ final class ContentProviderRecord {
return (externalProcessTokenToHandle != null || externalProcessNoHandleCount > 0);
}
+ public boolean hasConnectionOrHandle() {
+ return !connections.isEmpty() || hasExternalProcessHandles();
+ }
+
void dump(PrintWriter pw, String prefix, boolean full) {
if (full) {
pw.print(prefix); pw.print("package=");