summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2010-04-23 14:25:05 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2010-04-23 14:25:05 -0700
commit994e39908b167fb70883ce6c1146433e0486e86f (patch)
tree6d6205d8ad08277680dbb6eda7376dde1326aca6 /services
parent27e5a95afc10faca6314f9b710f07e8f99b3311f (diff)
parent2adec762fbb61c73f612acb7463ba765de1296ad (diff)
downloadframeworks_base-994e39908b167fb70883ce6c1146433e0486e86f.zip
frameworks_base-994e39908b167fb70883ce6c1146433e0486e86f.tar.gz
frameworks_base-994e39908b167fb70883ce6c1146433e0486e86f.tar.bz2
am 2adec762: Merge "Fix issue #2621809: Kill! Kill! Kill!" into froyo
Merge commit '2adec762fbb61c73f612acb7463ba765de1296ad' into froyo-plus-aosp * commit '2adec762fbb61c73f612acb7463ba765de1296ad': Fix issue #2621809: Kill! Kill! Kill!
Diffstat (limited to 'services')
-rw-r--r--services/java/com/android/server/am/ActivityManagerService.java19
-rw-r--r--services/java/com/android/server/am/ProcessRecord.java4
2 files changed, 15 insertions, 8 deletions
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java
index 436bd17..8383ca3 100644
--- a/services/java/com/android/server/am/ActivityManagerService.java
+++ b/services/java/com/android/server/am/ActivityManagerService.java
@@ -14271,14 +14271,17 @@ public final class ActivityManagerService extends ActivityManagerNative implemen
}
}
if (app.curAdj >= HIDDEN_APP_MIN_ADJ) {
- numHidden++;
- if (numHidden > MAX_HIDDEN_APPS) {
- Slog.i(TAG, "Kill " + app.processName
- + " (pid " + app.pid + "): hidden #" + numHidden
- + " beyond limit " + MAX_HIDDEN_APPS);
- EventLog.writeEvent(EventLogTags.AM_KILL, app.pid,
- app.processName, app.setAdj, "too many background");
- Process.killProcess(app.pid);
+ if (!app.killedBackground) {
+ numHidden++;
+ if (numHidden > MAX_HIDDEN_APPS) {
+ Slog.i(TAG, "Kill " + app.processName
+ + " (pid " + app.pid + "): hidden #" + numHidden
+ + " beyond limit " + MAX_HIDDEN_APPS);
+ EventLog.writeEvent(EventLogTags.AM_KILL, app.pid,
+ app.processName, app.setAdj, "too many background");
+ app.killedBackground = true;
+ Process.killProcess(app.pid);
+ }
}
}
} else {
diff --git a/services/java/com/android/server/am/ProcessRecord.java b/services/java/com/android/server/am/ProcessRecord.java
index 28195ce..7620468 100644
--- a/services/java/com/android/server/am/ProcessRecord.java
+++ b/services/java/com/android/server/am/ProcessRecord.java
@@ -64,6 +64,7 @@ class ProcessRecord implements Watchdog.PssRequestor {
boolean setIsForeground; // Running foreground UI when last set?
boolean foregroundServices; // Running any services that are foreground?
boolean bad; // True if disabled in the bad process list
+ boolean killedBackground; // True when proc has been killed due to too many bg
IBinder forcingToForeground;// Token that is forcing this process to be foreground
int adjSeq; // Sequence id for identifying repeated trav
ComponentName instrumentationClass;// class installed to instrument app
@@ -174,6 +175,9 @@ class ProcessRecord implements Watchdog.PssRequestor {
pw.print(prefix); pw.print("persistent="); pw.print(persistent);
pw.print(" removed="); pw.print(removed);
pw.print(" persistentActivities="); pw.println(persistentActivities);
+ if (killedBackground) {
+ pw.print(prefix); pw.print("killedBackground="); pw.println(killedBackground);
+ }
if (debugging || crashing || crashDialog != null || notResponding
|| anrDialog != null || bad) {
pw.print(prefix); pw.print("debugging="); pw.print(debugging);