diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index a737ea7ef7f47..2a1a8971ec8c8 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -11501,6 +11501,9 @@ public class ActivityManagerService extends IActivityManager.Stub // and it's not isolated, as we'd need the signal to bookkeeping the dying process list. restart = app.onCleanupApplicationRecordLSP(mProcessStats, allowRestart, fromBinderDied || app.isolated /* unlinkDeath */); + + // Cancel pending frozen task if there is any. + mOomAdjuster.mCachedAppOptimizer.unscheduleFreezeAppLSP(app); } mAppProfiler.onCleanupApplicationRecordLocked(app); skipCurrentReceiverLocked(app); diff --git a/services/core/java/com/android/server/am/CachedAppOptimizer.java b/services/core/java/com/android/server/am/CachedAppOptimizer.java index e4cb15fe8d563..8dc9d03dedb76 100644 --- a/services/core/java/com/android/server/am/CachedAppOptimizer.java +++ b/services/core/java/com/android/server/am/CachedAppOptimizer.java @@ -974,6 +974,16 @@ public final class CachedAppOptimizer { } } + /** + * To be called when the given app is killed. + */ + @GuardedBy({"mAm", "mProcLock"}) + void unscheduleFreezeAppLSP(ProcessRecord app) { + if (mUseFreezer) { + mFreezeHandler.removeMessages(SET_FROZEN_PROCESS_MSG, app); + } + } + @VisibleForTesting static final class LastCompactionStats { private final long[] mRssAfterCompaction;