diff options
| author | Dianne Hackborn <hackbod@google.com> | 2010-04-23 14:28:52 -0700 |
|---|---|---|
| committer | Android Git Automerger <android-git-automerger@android.com> | 2010-04-23 14:28:52 -0700 |
| commit | 8aed789f8377b1a4f36edb92bcd96b0901a1c6ad (patch) | |
| tree | 87a3d93e040859ed52e707ed990a7e1e8b843802 | |
| parent | 0c817ba34a6fc4a2bb9236e8bd93777a06421bcf (diff) | |
| parent | 994e39908b167fb70883ce6c1146433e0486e86f (diff) | |
| download | frameworks_base-8aed789f8377b1a4f36edb92bcd96b0901a1c6ad.zip frameworks_base-8aed789f8377b1a4f36edb92bcd96b0901a1c6ad.tar.gz frameworks_base-8aed789f8377b1a4f36edb92bcd96b0901a1c6ad.tar.bz2 | |
am 994e3990: am 2adec762: Merge "Fix issue #2621809: Kill! Kill! Kill!" into froyo
Merge commit '994e39908b167fb70883ce6c1146433e0486e86f' into kraken
* commit '994e39908b167fb70883ce6c1146433e0486e86f':
Fix issue #2621809: Kill! Kill! Kill!
| -rw-r--r-- | services/java/com/android/server/am/ActivityManagerService.java | 19 | ||||
| -rw-r--r-- | services/java/com/android/server/am/ProcessRecord.java | 4 |
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); |
