Loading services/core/java/com/android/server/am/ActivityManagerShellCommand.java +1 −2 Original line number Diff line number Diff line Loading @@ -1164,8 +1164,7 @@ final class ActivityManagerShellCommand extends ShellCommand { synchronized (mInternal) { synchronized (mInternal.mProcLock) { app.mOptRecord.setFreezeSticky(isSticky); mInternal.mOomAdjuster.mCachedAppOptimizer.freezeAppAsyncInternalLSP( app, 0 /* delayMillis */, true /* force */, false /* immediate */); mInternal.mOomAdjuster.mCachedAppOptimizer.forceFreezeAppAsyncLSP(app); } } return 0; Loading services/core/java/com/android/server/am/CachedAppOptimizer.java +13 −7 Original line number Diff line number Diff line Loading @@ -1413,9 +1413,14 @@ public final class CachedAppOptimizer { freezeAppAsyncLSP(app, updateEarliestFreezableTime(app, mFreezerDebounceTimeout)); } @GuardedBy({"mAm", "mProcLock"}) void forceFreezeAppAsyncLSP(ProcessRecord app) { freezeAppAsyncInternalLSP(app, 0 /* delayMillis */, true /* force */); } @GuardedBy({"mAm", "mProcLock"}) private void freezeAppAsyncLSP(ProcessRecord app, @UptimeMillisLong long delayMillis) { freezeAppAsyncInternalLSP(app, delayMillis, false, false); freezeAppAsyncInternalLSP(app, delayMillis, false /* force */); } @GuardedBy({"mAm", "mProcLock"}) Loading @@ -1427,17 +1432,18 @@ public final class CachedAppOptimizer { // and remove this method. @GuardedBy({"mAm", "mProcLock"}) void freezeAppAsyncImmediateLSP(ProcessRecord app) { freezeAppAsyncInternalLSP(app, 0, false, true); freezeAppAsyncInternalLSP(app, 0 /* delayMillis */, false /* force */); } // TODO: Update this method to be private and have the existing clients call different methods. // This "internal" method should not be directly triggered by clients outside this class. @GuardedBy({"mAm", "mProcLock"}) void freezeAppAsyncInternalLSP(ProcessRecord app, @UptimeMillisLong long delayMillis, boolean force, boolean immediate) { private void freezeAppAsyncInternalLSP(ProcessRecord app, @UptimeMillisLong long delayMillis, boolean force) { final ProcessCachedOptimizerRecord opt = app.mOptRecord; if (opt.isPendingFreeze()) { if (immediate) { if (delayMillis == 0) { // Caller is requesting to freeze the process without delay, so remove // any already posted messages which would have been handled with a delay and // post a new message without a delay. mFreezeHandler.removeMessages(SET_FROZEN_PROCESS_MSG, app); mFreezeHandler.sendMessage(mFreezeHandler.obtainMessage( SET_FROZEN_PROCESS_MSG, DO_FREEZE, 0, app)); Loading services/tests/mockingservicestests/src/com/android/server/am/ServiceBindingOomAdjPolicyTest.java +3 −4 Original line number Diff line number Diff line Loading @@ -36,7 +36,6 @@ import static com.android.server.am.ProcessList.SERVICE_ADJ; import static org.junit.Assert.assertNotEquals; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.anyString; Loading Loading @@ -185,8 +184,8 @@ public final class ServiceBindingOomAdjPolicyTest { doReturn(false).when(mAms.mAtmInternal).hasSystemAlertWindowPermission(anyInt(), anyInt(), any()); doReturn(true).when(mAms.mOomAdjuster.mCachedAppOptimizer).useFreezer(); doNothing().when(mAms.mOomAdjuster.mCachedAppOptimizer).freezeAppAsyncInternalLSP( any(), anyLong(), anyBoolean(), anyBoolean()); doNothing().when(mAms.mOomAdjuster.mCachedAppOptimizer).freezeAppAsyncAtEarliestLSP( any()); doReturn(false).when(mAms.mAppProfiler).updateLowMemStateLSP(anyInt(), anyInt(), anyInt(), anyLong()); Loading Loading @@ -503,7 +502,7 @@ public final class ServiceBindingOomAdjPolicyTest { if (clientApp.isFreezable()) { verify(mAms.mOomAdjuster.mCachedAppOptimizer, times(Flags.serviceBindingOomAdjPolicy() ? 1 : 0)) .freezeAppAsyncInternalLSP(eq(clientApp), eq(0L), anyBoolean(), anyBoolean()); .freezeAppAsyncAtEarliestLSP(eq(clientApp)); clearInvocations(mAms.mOomAdjuster.mCachedAppOptimizer); } Loading Loading
services/core/java/com/android/server/am/ActivityManagerShellCommand.java +1 −2 Original line number Diff line number Diff line Loading @@ -1164,8 +1164,7 @@ final class ActivityManagerShellCommand extends ShellCommand { synchronized (mInternal) { synchronized (mInternal.mProcLock) { app.mOptRecord.setFreezeSticky(isSticky); mInternal.mOomAdjuster.mCachedAppOptimizer.freezeAppAsyncInternalLSP( app, 0 /* delayMillis */, true /* force */, false /* immediate */); mInternal.mOomAdjuster.mCachedAppOptimizer.forceFreezeAppAsyncLSP(app); } } return 0; Loading
services/core/java/com/android/server/am/CachedAppOptimizer.java +13 −7 Original line number Diff line number Diff line Loading @@ -1413,9 +1413,14 @@ public final class CachedAppOptimizer { freezeAppAsyncLSP(app, updateEarliestFreezableTime(app, mFreezerDebounceTimeout)); } @GuardedBy({"mAm", "mProcLock"}) void forceFreezeAppAsyncLSP(ProcessRecord app) { freezeAppAsyncInternalLSP(app, 0 /* delayMillis */, true /* force */); } @GuardedBy({"mAm", "mProcLock"}) private void freezeAppAsyncLSP(ProcessRecord app, @UptimeMillisLong long delayMillis) { freezeAppAsyncInternalLSP(app, delayMillis, false, false); freezeAppAsyncInternalLSP(app, delayMillis, false /* force */); } @GuardedBy({"mAm", "mProcLock"}) Loading @@ -1427,17 +1432,18 @@ public final class CachedAppOptimizer { // and remove this method. @GuardedBy({"mAm", "mProcLock"}) void freezeAppAsyncImmediateLSP(ProcessRecord app) { freezeAppAsyncInternalLSP(app, 0, false, true); freezeAppAsyncInternalLSP(app, 0 /* delayMillis */, false /* force */); } // TODO: Update this method to be private and have the existing clients call different methods. // This "internal" method should not be directly triggered by clients outside this class. @GuardedBy({"mAm", "mProcLock"}) void freezeAppAsyncInternalLSP(ProcessRecord app, @UptimeMillisLong long delayMillis, boolean force, boolean immediate) { private void freezeAppAsyncInternalLSP(ProcessRecord app, @UptimeMillisLong long delayMillis, boolean force) { final ProcessCachedOptimizerRecord opt = app.mOptRecord; if (opt.isPendingFreeze()) { if (immediate) { if (delayMillis == 0) { // Caller is requesting to freeze the process without delay, so remove // any already posted messages which would have been handled with a delay and // post a new message without a delay. mFreezeHandler.removeMessages(SET_FROZEN_PROCESS_MSG, app); mFreezeHandler.sendMessage(mFreezeHandler.obtainMessage( SET_FROZEN_PROCESS_MSG, DO_FREEZE, 0, app)); Loading
services/tests/mockingservicestests/src/com/android/server/am/ServiceBindingOomAdjPolicyTest.java +3 −4 Original line number Diff line number Diff line Loading @@ -36,7 +36,6 @@ import static com.android.server.am.ProcessList.SERVICE_ADJ; import static org.junit.Assert.assertNotEquals; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.anyString; Loading Loading @@ -185,8 +184,8 @@ public final class ServiceBindingOomAdjPolicyTest { doReturn(false).when(mAms.mAtmInternal).hasSystemAlertWindowPermission(anyInt(), anyInt(), any()); doReturn(true).when(mAms.mOomAdjuster.mCachedAppOptimizer).useFreezer(); doNothing().when(mAms.mOomAdjuster.mCachedAppOptimizer).freezeAppAsyncInternalLSP( any(), anyLong(), anyBoolean(), anyBoolean()); doNothing().when(mAms.mOomAdjuster.mCachedAppOptimizer).freezeAppAsyncAtEarliestLSP( any()); doReturn(false).when(mAms.mAppProfiler).updateLowMemStateLSP(anyInt(), anyInt(), anyInt(), anyLong()); Loading Loading @@ -503,7 +502,7 @@ public final class ServiceBindingOomAdjPolicyTest { if (clientApp.isFreezable()) { verify(mAms.mOomAdjuster.mCachedAppOptimizer, times(Flags.serviceBindingOomAdjPolicy() ? 1 : 0)) .freezeAppAsyncInternalLSP(eq(clientApp), eq(0L), anyBoolean(), anyBoolean()); .freezeAppAsyncAtEarliestLSP(eq(clientApp)); clearInvocations(mAms.mOomAdjuster.mCachedAppOptimizer); } Loading