diff options
Diffstat (limited to 'services')
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; } |