Removed references to ATMS.mHomeProcess and mPreviousProcess from AMS (33/n)
Should only be access from ATMS side.
Bug: 80414790
Test: Existing tests pass
Change-Id: I726037d5a5fba9295ddeffb4c02637c287bf6da8
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index b5a054e..9c4f187e 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -7284,7 +7284,6 @@
mBatteryStatsService.shutdown();
synchronized (this) {
mProcessStats.shutdownLocked();
- mActivityTaskManager.notifyTaskPersisterLocked(null, true);
}
return timedout;
@@ -10384,11 +10383,7 @@
dumpProcessesToGc(pw, needSep, null);
pw.println();
- pw.println(" mHomeProcess: " + mActivityTaskManager.mHomeProcess);
- pw.println(" mPreviousProcess: " + mActivityTaskManager.mPreviousProcess);
- if (mActivityTaskManager.mHeavyWeightProcess != null) {
- pw.println(" mHeavyWeightProcess: " + mActivityTaskManager.mHeavyWeightProcess);
- }
+ mAtmInternal.dumpForOom(pw);
return true;
}
@@ -15442,7 +15437,7 @@
}
}
- if (wpc == mActivityTaskManager.mHomeProcess) {
+ if (wpc.isHomeProcess()) {
if (adj > ProcessList.HOME_APP_ADJ) {
// This process is hosting what we currently consider to be the
// home app, so we don't want to let it go into the background.
@@ -15463,7 +15458,7 @@
}
}
- if (wpc == mActivityTaskManager.mPreviousProcess && app.hasActivities()) {
+ if (wpc.isPreviousProcess() && app.hasActivities()) {
if (adj > ProcessList.PREVIOUS_APP_ADJ) {
// This was the previous process that showed UI to the user.
// We want to try to keep it around more aggressively, to give
@@ -15540,7 +15535,7 @@
"Raise procstate to started service: " + app);
}
}
- if (app.hasShownUi && wpc != mActivityTaskManager.mHomeProcess) {
+ if (app.hasShownUi && !wpc.isHomeProcess()) {
// If this process has shown some UI, let it immediately
// go to the LRU list because it may be pretty heavy with
// UI stuff. We'll tag it with a label just to help
@@ -15619,7 +15614,7 @@
if ((cr.flags&Context.BIND_ALLOW_OOM_MANAGEMENT) != 0) {
// Not doing bind OOM management, so treat
// this guy more like a started service.
- if (app.hasShownUi && wpc != mActivityTaskManager.mHomeProcess) {
+ if (app.hasShownUi && !wpc.isHomeProcess()) {
// If this process has shown some UI, let it immediately
// go to the LRU list because it may be pretty heavy with
// UI stuff. We'll tag it with a label just to help
@@ -15652,7 +15647,7 @@
// about letting this process get into the LRU
// list to be killed and restarted if needed for
// memory.
- if (app.hasShownUi && wpc != mActivityTaskManager.mHomeProcess
+ if (app.hasShownUi && !wpc.isHomeProcess()
&& clientAdj > ProcessList.PERCEPTIBLE_APP_ADJ) {
if (adj >= ProcessList.CACHED_APP_MIN_ADJ) {
adjType = "cch-bound-ui-services";
@@ -15858,7 +15853,7 @@
}
String adjType = null;
if (adj > clientAdj) {
- if (app.hasShownUi && wpc != mActivityTaskManager.mHomeProcess
+ if (app.hasShownUi && !wpc.isHomeProcess()
&& clientAdj > ProcessList.PERCEPTIBLE_APP_ADJ) {
adjType = "cch-ui-provider";
} else {
@@ -17349,8 +17344,8 @@
}
int factor = numTrimming/3;
int minFactor = 2;
- if (mActivityTaskManager.mHomeProcess != null) minFactor++;
- if (mActivityTaskManager.mPreviousProcess != null) minFactor++;
+ if (mAtmInternal.getHomeProcess() != null) minFactor++;
+ if (mAtmInternal.getPreviousProcess() != null) minFactor++;
if (factor < minFactor) factor = minFactor;
int curLevel = ComponentCallbacks2.TRIM_MEMORY_COMPLETE;
for (int i=N-1; i>=0; i--) {
diff --git a/services/core/java/com/android/server/am/ActivityTaskManagerService.java b/services/core/java/com/android/server/am/ActivityTaskManagerService.java
index 0c8716c..c89c8db 100644
--- a/services/core/java/com/android/server/am/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityTaskManagerService.java
@@ -5904,6 +5904,7 @@
mShuttingDown = true;
mStackSupervisor.prepareForShutdownLocked();
updateEventDispatchingLocked(booted);
+ notifyTaskPersisterLocked(null, true);
return mStackSupervisor.shutdownLocked(timeout);
}
}
@@ -6584,6 +6585,17 @@
}
@Override
+ public void dumpForOom(PrintWriter pw) {
+ synchronized (mGlobalLock) {
+ pw.println(" mHomeProcess: " + mHomeProcess);
+ pw.println(" mPreviousProcess: " + mPreviousProcess);
+ if (mHeavyWeightProcess != null) {
+ pw.println(" mHeavyWeightProcess: " + mHeavyWeightProcess);
+ }
+ }
+ }
+
+ @Override
public boolean canGcNow() {
synchronized (mGlobalLock) {
return isSleeping() || mStackSupervisor.allResumedActivitiesIdle();
@@ -6741,5 +6753,19 @@
public void flushRecentTasks() {
mRecentTasks.flush();
}
+
+ @Override
+ public WindowProcessController getHomeProcess() {
+ synchronized (mGlobalLock) {
+ return mHomeProcess;
+ }
+ }
+
+ @Override
+ public WindowProcessController getPreviousProcess() {
+ synchronized (mGlobalLock) {
+ return mPreviousProcess;
+ }
+ }
}
}
diff --git a/services/core/java/com/android/server/am/AppErrors.java b/services/core/java/com/android/server/am/AppErrors.java
index 0b8b74d..dee59cc 100644
--- a/services/core/java/com/android/server/am/AppErrors.java
+++ b/services/core/java/com/android/server/am/AppErrors.java
@@ -730,7 +730,7 @@
// with a home activity running in the process to prevent a repeatedly crashing app
// from blocking the user to manually clear the list.
final WindowProcessController proc = app.getWindowProcessController();
- final WindowProcessController homeProc = mService.mActivityTaskManager.mHomeProcess;
+ final WindowProcessController homeProc = mService.mAtmInternal.getHomeProcess();
if (proc == homeProc && proc.hasActivities()
&& (homeProc.mInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
proc.clearPackagePreferredForHomeActivities();
diff --git a/services/core/java/com/android/server/am/WindowProcessController.java b/services/core/java/com/android/server/am/WindowProcessController.java
index 7e66d50..32d19aa 100644
--- a/services/core/java/com/android/server/am/WindowProcessController.java
+++ b/services/core/java/com/android/server/am/WindowProcessController.java
@@ -860,6 +860,18 @@
}
}
+ public boolean isHomeProcess() {
+ synchronized (mAtm.mGlobalLock) {
+ return this == mAtm.mHomeProcess;
+ }
+ }
+
+ public boolean isPreviousProcess() {
+ synchronized (mAtm.mGlobalLock) {
+ return this == mAtm.mPreviousProcess;
+ }
+ }
+
public void dump(PrintWriter pw, String prefix) {
synchronized (mAtm.mGlobalLock) {
if (mActivities.size() > 0) {
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java b/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java
index b017d14..16dd910 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java
@@ -410,6 +410,9 @@
String[] args, int opti, boolean dumpAll, boolean dumpVisibleStacksOnly,
boolean dumpFocusedStackOnly);
+ /** Dump the current state for inclusion in oom dump. */
+ public abstract void dumpForOom(PrintWriter pw);
+
/** @return true if it the activity management system is okay with GC running now. */
public abstract boolean canGcNow();
@@ -460,4 +463,7 @@
int userId);
/** Flush recent tasks to disk. */
public abstract void flushRecentTasks();
+
+ public abstract WindowProcessController getHomeProcess();
+ public abstract WindowProcessController getPreviousProcess();
}