summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/am/OomAdjuster.java8
-rw-r--r--services/tests/mockingservicestests/src/com/android/server/am/MockingOomAdjusterTests.java9
2 files changed, 14 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/am/OomAdjuster.java b/services/core/java/com/android/server/am/OomAdjuster.java
index a81590c8c022..14c5b2cb12b2 100644
--- a/services/core/java/com/android/server/am/OomAdjuster.java
+++ b/services/core/java/com/android/server/am/OomAdjuster.java
@@ -1260,9 +1260,11 @@ public final class OomAdjuster {
// value that the caller wants us to.
adj = cachedAdj;
procState = PROCESS_STATE_CACHED_EMPTY;
- app.setCached(true);
- app.empty = true;
- app.adjType = "cch-empty";
+ if (!app.containsCycle) {
+ app.setCached(true);
+ app.empty = true;
+ app.adjType = "cch-empty";
+ }
if (DEBUG_OOM_ADJ_REASON || logUid == appUid) {
reportOomAdjMessageLocked(TAG_OOM_ADJ, "Making empty: " + app);
}
diff --git a/services/tests/mockingservicestests/src/com/android/server/am/MockingOomAdjusterTests.java b/services/tests/mockingservicestests/src/com/android/server/am/MockingOomAdjusterTests.java
index 2983d585c45a..fde40aa77a0e 100644
--- a/services/tests/mockingservicestests/src/com/android/server/am/MockingOomAdjusterTests.java
+++ b/services/tests/mockingservicestests/src/com/android/server/am/MockingOomAdjusterTests.java
@@ -1387,6 +1387,15 @@ public class MockingOomAdjusterTests {
SCHED_GROUP_DEFAULT);
assertProcStates(app3, PROCESS_STATE_FOREGROUND_SERVICE, PERCEPTIBLE_APP_ADJ,
SCHED_GROUP_DEFAULT);
+ assertEquals("service", app.adjType);
+ assertEquals("service", app2.adjType);
+ assertEquals("fg-service", app3.adjType);
+ assertEquals(false, app.isCached());
+ assertEquals(false, app2.isCached());
+ assertEquals(false, app3.isCached());
+ assertEquals(false, app.empty);
+ assertEquals(false, app2.empty);
+ assertEquals(false, app3.empty);
}
@SuppressWarnings("GuardedBy")