summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/am/ActiveServices.java4
-rw-r--r--services/core/java/com/android/server/am/OomAdjuster.java7
-rw-r--r--services/core/java/com/android/server/am/ProcessStateRecord.java33
-rw-r--r--services/core/java/com/android/server/am/ServiceRecord.java2
4 files changed, 6 insertions, 40 deletions
diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java
index 235dbeeb9e27..5cf909095de2 100644
--- a/services/core/java/com/android/server/am/ActiveServices.java
+++ b/services/core/java/com/android/server/am/ActiveServices.java
@@ -6621,8 +6621,8 @@ public final class ActiveServices {
final Integer allowedType = mAm.mProcessList.searchEachLruProcessesLOSP(false, app -> {
if (app.uid == callingUid) {
final ProcessStateRecord state = app.mState;
- if (state.isAllowedStartFgsState()) {
- return getReasonCodeFromProcState(state.getAllowStartFgsState());
+ if (state.isAllowedStartFgs()) {
+ return getReasonCodeFromProcState(state.getCurProcState());
} else {
final ActiveInstrumentation instr = app.getActiveInstrumentation();
if (instr != null
diff --git a/services/core/java/com/android/server/am/OomAdjuster.java b/services/core/java/com/android/server/am/OomAdjuster.java
index 4ecc36d2750c..4d10574149ff 100644
--- a/services/core/java/com/android/server/am/OomAdjuster.java
+++ b/services/core/java/com/android/server/am/OomAdjuster.java
@@ -1478,7 +1478,6 @@ public class OomAdjuster {
state.setAdjTarget(null);
state.setEmpty(false);
state.setCached(false);
- state.resetAllowStartFgsState();
if (!cycleReEval) {
// Don't reset this flag when doing cycles re-evaluation.
state.setNoKillOnBgRestrictedAndIdle(false);
@@ -1537,7 +1536,6 @@ public class OomAdjuster {
state.setCurRawProcState(state.getCurProcState());
state.setCurAdj(state.getMaxAdj());
state.setCompletedAdjSeq(state.getAdjSeq());
- state.bumpAllowStartFgsState(state.getCurProcState());
// if curAdj is less than prevAppAdj, then this process was promoted
return state.getCurAdj() < prevAppAdj || state.getCurProcState() < prevProcState;
}
@@ -1563,7 +1561,6 @@ public class OomAdjuster {
foregroundActivities = true;
hasVisibleActivities = true;
procState = PROCESS_STATE_CUR_TOP;
- state.bumpAllowStartFgsState(PROCESS_STATE_TOP);
if (DEBUG_OOM_ADJ_REASON || logUid == appUid) {
reportOomAdjMessageLocked(TAG_OOM_ADJ, "Making top: " + app);
}
@@ -1661,7 +1658,6 @@ public class OomAdjuster {
// The user is aware of this app, so make it visible.
adj = ProcessList.PERCEPTIBLE_APP_ADJ;
procState = PROCESS_STATE_FOREGROUND_SERVICE;
- state.bumpAllowStartFgsState(PROCESS_STATE_FOREGROUND_SERVICE);
state.setAdjType("fg-service");
state.setCached(false);
schedGroup = ProcessList.SCHED_GROUP_DEFAULT;
@@ -2103,8 +2099,6 @@ public class OomAdjuster {
// give them the best bound state after that.
if (cr.hasFlag(Context.BIND_FOREGROUND_SERVICE)) {
clientProcState = PROCESS_STATE_BOUND_FOREGROUND_SERVICE;
- state.bumpAllowStartFgsState(
- PROCESS_STATE_BOUND_FOREGROUND_SERVICE);
} else if (mService.mWakefulness.get()
== PowerManagerInternal.WAKEFULNESS_AWAKE
&& (cr.flags & Context.BIND_FOREGROUND_SERVICE_WHILE_AWAKE)
@@ -2118,7 +2112,6 @@ public class OomAdjuster {
// Go at most to BOUND_TOP, unless requested to elevate
// to client's state.
clientProcState = PROCESS_STATE_BOUND_TOP;
- state.bumpAllowStartFgsState(PROCESS_STATE_BOUND_TOP);
final boolean enabled = cstate.getCachedCompatChange(
CACHED_COMPAT_CHANGE_PROCESS_CAPABILITY);
if (enabled) {
diff --git a/services/core/java/com/android/server/am/ProcessStateRecord.java b/services/core/java/com/android/server/am/ProcessStateRecord.java
index b08f6c1949be..e0660b41a232 100644
--- a/services/core/java/com/android/server/am/ProcessStateRecord.java
+++ b/services/core/java/com/android/server/am/ProcessStateRecord.java
@@ -296,13 +296,6 @@ final class ProcessStateRecord {
private boolean mSystemNoUi;
/**
- * If the proc state is PROCESS_STATE_BOUND_FOREGROUND_SERVICE or above, it can start FGS.
- * It must obtain the proc state from a persistent/top process or FGS, not transitive.
- */
- @GuardedBy("mService")
- private int mAllowStartFgsState = PROCESS_STATE_NONEXISTENT;
-
- /**
* Whether or not the app is background restricted (OP_RUN_ANY_IN_BACKGROUND is NOT allowed).
*/
@GuardedBy("mService")
@@ -1165,33 +1158,15 @@ final class ProcessStateRecord {
mCurRawAdj = mSetRawAdj = mCurAdj = mSetAdj = mVerifiedAdj = ProcessList.INVALID_ADJ;
mCurCapability = mSetCapability = PROCESS_CAPABILITY_NONE;
mCurSchedGroup = mSetSchedGroup = ProcessList.SCHED_GROUP_BACKGROUND;
- mCurProcState = mCurRawProcState = mSetProcState = mAllowStartFgsState =
- PROCESS_STATE_NONEXISTENT;
+ mCurProcState = mCurRawProcState = mSetProcState = PROCESS_STATE_NONEXISTENT;
for (int i = 0; i < mCachedCompatChanges.length; i++) {
mCachedCompatChanges[i] = VALUE_INVALID;
}
}
@GuardedBy("mService")
- void resetAllowStartFgsState() {
- mAllowStartFgsState = PROCESS_STATE_NONEXISTENT;
- }
-
- @GuardedBy("mService")
- void bumpAllowStartFgsState(int newProcState) {
- if (newProcState < mAllowStartFgsState) {
- mAllowStartFgsState = newProcState;
- }
- }
-
- @GuardedBy("mService")
- int getAllowStartFgsState() {
- return mAllowStartFgsState;
- }
-
- @GuardedBy("mService")
- boolean isAllowedStartFgsState() {
- return mAllowStartFgsState <= PROCESS_STATE_BOUND_FOREGROUND_SERVICE;
+ boolean isAllowedStartFgs() {
+ return mCurProcState <= PROCESS_STATE_BOUND_FOREGROUND_SERVICE;
}
@GuardedBy("mService")
@@ -1331,8 +1306,6 @@ final class ProcessStateRecord {
pw.print(" setCapability=");
ActivityManager.printCapabilitiesFull(pw, mSetCapability);
pw.println();
- pw.print(prefix); pw.print("allowStartFgsState=");
- pw.print(mAllowStartFgsState);
if (mBackgroundRestricted) {
pw.print(" backgroundRestricted=");
pw.print(mBackgroundRestricted);
diff --git a/services/core/java/com/android/server/am/ServiceRecord.java b/services/core/java/com/android/server/am/ServiceRecord.java
index 5a55b8b33cad..480e69bd4f19 100644
--- a/services/core/java/com/android/server/am/ServiceRecord.java
+++ b/services/core/java/com/android/server/am/ServiceRecord.java
@@ -488,7 +488,7 @@ final class ServiceRecord extends Binder implements ComponentName.WithComponentN
pw.print(prefix); pw.print("recentCallingUid=");
pw.println(mRecentCallingUid);
pw.print(prefix); pw.print("allowStartForeground=");
- pw.println(mAllowStartForeground);
+ pw.println(PowerExemptionManager.reasonCodeToString(mAllowStartForeground));
pw.print(prefix); pw.print("startForegroundCount=");
pw.println(mStartForegroundCount);
pw.print(prefix); pw.print("infoAllowStartForeground=");