summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerShellCommand.java3
-rw-r--r--services/core/java/com/android/server/am/CachedAppOptimizer.java20
-rw-r--r--services/tests/mockingservicestests/src/com/android/server/am/ServiceBindingOomAdjPolicyTest.java7
3 files changed, 17 insertions, 13 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java
index 4ebabdc4cc66..5a97e87f53f7 100644
--- a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java
+++ b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java
@@ -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;
diff --git a/services/core/java/com/android/server/am/CachedAppOptimizer.java b/services/core/java/com/android/server/am/CachedAppOptimizer.java
index 0cf557588958..6e20f6cc877d 100644
--- a/services/core/java/com/android/server/am/CachedAppOptimizer.java
+++ b/services/core/java/com/android/server/am/CachedAppOptimizer.java
@@ -1414,8 +1414,13 @@ public final class CachedAppOptimizer {
}
@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"})
@@ -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));
diff --git a/services/tests/mockingservicestests/src/com/android/server/am/ServiceBindingOomAdjPolicyTest.java b/services/tests/mockingservicestests/src/com/android/server/am/ServiceBindingOomAdjPolicyTest.java
index 97b7af8e43ad..680ab1634cb2 100644
--- a/services/tests/mockingservicestests/src/com/android/server/am/ServiceBindingOomAdjPolicyTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/am/ServiceBindingOomAdjPolicyTest.java
@@ -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;
@@ -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());
@@ -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);
}