summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java1
-rw-r--r--services/core/java/com/android/server/am/CachedAppOptimizer.java10
-rw-r--r--services/core/java/com/android/server/am/OomAdjuster.java4
-rw-r--r--services/core/jni/com_android_server_am_CachedAppOptimizer.cpp1
4 files changed, 16 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 3e3a4a51f372..dbdb2ab54e89 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -6447,6 +6447,7 @@ public class ActivityManagerService extends IActivityManager.Stub
reportCurWakefulnessUsageEvent();
mActivityTaskManager.onScreenAwakeChanged(isAwake);
mOomAdjProfiler.onWakefulnessChanged(wakefulness);
+ mOomAdjuster.onWakefulnessChanged(wakefulness);
}
updateOomAdjLocked(OomAdjuster.OOM_ADJ_REASON_UI_VISIBILITY);
}
diff --git a/services/core/java/com/android/server/am/CachedAppOptimizer.java b/services/core/java/com/android/server/am/CachedAppOptimizer.java
index 2761a7c6d937..6ee41eff1fcf 100644
--- a/services/core/java/com/android/server/am/CachedAppOptimizer.java
+++ b/services/core/java/com/android/server/am/CachedAppOptimizer.java
@@ -28,6 +28,7 @@ import android.net.Uri;
import android.os.Debug;
import android.os.Handler;
import android.os.Message;
+import android.os.PowerManagerInternal;
import android.os.Process;
import android.os.SystemClock;
import android.os.SystemProperties;
@@ -1127,6 +1128,15 @@ public final class CachedAppOptimizer {
}
}
+ void onWakefulnessChanged(int wakefulness) {
+ if(wakefulness == PowerManagerInternal.WAKEFULNESS_AWAKE) {
+ // Remove any pending compaction we may have scheduled to happen while screen was off
+ Slog.e(TAG_AM, "Cancel pending or running compactions as system is awake");
+ mPendingCompactionProcesses.clear();
+ cancelCompaction();
+ }
+ }
+
@GuardedBy({"mService", "mProcLock"})
void onOomAdjustChanged(int oldAdj, int newAdj, ProcessRecord app) {
// Cancel any currently executing compactions
diff --git a/services/core/java/com/android/server/am/OomAdjuster.java b/services/core/java/com/android/server/am/OomAdjuster.java
index e94c2fa60fc1..2ed6fc483e31 100644
--- a/services/core/java/com/android/server/am/OomAdjuster.java
+++ b/services/core/java/com/android/server/am/OomAdjuster.java
@@ -2687,6 +2687,10 @@ public class OomAdjuster {
}
}
+ void onWakefulnessChanged(int wakefulness) {
+ mCachedAppOptimizer.onWakefulnessChanged(wakefulness);
+ }
+
/** Applies the computed oomadj, procstate and sched group values and freezes them in set* */
@GuardedBy({"mService", "mProcLock"})
private boolean applyOomAdjLSP(ProcessRecord app, boolean doingAll, long now,
diff --git a/services/core/jni/com_android_server_am_CachedAppOptimizer.cpp b/services/core/jni/com_android_server_am_CachedAppOptimizer.cpp
index 0271277acb7a..636ca4143a33 100644
--- a/services/core/jni/com_android_server_am_CachedAppOptimizer.cpp
+++ b/services/core/jni/com_android_server_am_CachedAppOptimizer.cpp
@@ -113,6 +113,7 @@ static int64_t compactMemory(const std::vector<Vma>& vmas, int pid, int madviseT
// There could be a significant delay between when a compaction
// is requested and when it is handled during this time our
// OOM adjust could have improved.
+ LOG(DEBUG) << "Cancelled running compaction for " << pid;
break;
}