summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/ActivityTaskManagerService.java14
-rw-r--r--services/core/java/com/android/server/wm/ActivityTaskSupervisor.java2
-rw-r--r--services/core/java/com/android/server/wm/CompatModePackages.java2
-rw-r--r--services/core/java/com/android/server/wm/WindowProcessController.java18
4 files changed, 23 insertions, 13 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
index f4d76c2603a2..a50c4a1b85c0 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
@@ -6363,7 +6363,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
int wakefulness) {
synchronized (mGlobalLock) {
if (mHomeProcess != null && (dumpPackage == null
- || mHomeProcess.mPkgList.contains(dumpPackage))) {
+ || mHomeProcess.containsPackage(dumpPackage))) {
if (needSep) {
pw.println();
needSep = false;
@@ -6371,7 +6371,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
pw.println(" mHomeProcess: " + mHomeProcess);
}
if (mPreviousProcess != null && (dumpPackage == null
- || mPreviousProcess.mPkgList.contains(dumpPackage))) {
+ || mPreviousProcess.containsPackage(dumpPackage))) {
if (needSep) {
pw.println();
needSep = false;
@@ -6379,14 +6379,14 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
pw.println(" mPreviousProcess: " + mPreviousProcess);
}
if (dumpAll && (mPreviousProcess == null || dumpPackage == null
- || mPreviousProcess.mPkgList.contains(dumpPackage))) {
+ || mPreviousProcess.containsPackage(dumpPackage))) {
StringBuilder sb = new StringBuilder(128);
sb.append(" mPreviousProcessVisibleTime: ");
TimeUtils.formatDuration(mPreviousProcessVisibleTime, sb);
pw.println(sb);
}
if (mHeavyWeightProcess != null && (dumpPackage == null
- || mHeavyWeightProcess.mPkgList.contains(dumpPackage))) {
+ || mHeavyWeightProcess.containsPackage(dumpPackage))) {
if (needSep) {
pw.println();
needSep = false;
@@ -6510,18 +6510,18 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
}
if (mHomeProcess != null && (dumpPackage == null
- || mHomeProcess.mPkgList.contains(dumpPackage))) {
+ || mHomeProcess.containsPackage(dumpPackage))) {
mHomeProcess.dumpDebug(proto, HOME_PROC);
}
if (mPreviousProcess != null && (dumpPackage == null
- || mPreviousProcess.mPkgList.contains(dumpPackage))) {
+ || mPreviousProcess.containsPackage(dumpPackage))) {
mPreviousProcess.dumpDebug(proto, PREVIOUS_PROC);
proto.write(PREVIOUS_PROC_VISIBLE_TIME_MS, mPreviousProcessVisibleTime);
}
if (mHeavyWeightProcess != null && (dumpPackage == null
- || mHeavyWeightProcess.mPkgList.contains(dumpPackage))) {
+ || mHeavyWeightProcess.containsPackage(dumpPackage))) {
mHeavyWeightProcess.dumpDebug(proto, HEAVY_WEIGHT_PROC);
}
diff --git a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
index 3f885f3ab23f..8184bd63bffe 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
@@ -1717,7 +1717,7 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks {
// Don't kill the home process along with tasks from the same package.
continue;
}
- if (!proc.mPkgList.contains(pkg)) {
+ if (!proc.containsPackage(pkg)) {
// Don't kill process that is not associated with this task.
continue;
}
diff --git a/services/core/java/com/android/server/wm/CompatModePackages.java b/services/core/java/com/android/server/wm/CompatModePackages.java
index a035948564dc..d5828ef08251 100644
--- a/services/core/java/com/android/server/wm/CompatModePackages.java
+++ b/services/core/java/com/android/server/wm/CompatModePackages.java
@@ -566,7 +566,7 @@ public final class CompatModePackages {
SparseArray<WindowProcessController> pidMap = mService.mProcessMap.getPidMap();
for (int i = pidMap.size() - 1; i >= 0; i--) {
final WindowProcessController app = pidMap.valueAt(i);
- if (!app.mPkgList.contains(packageName)) {
+ if (!app.containsPackage(packageName)) {
continue;
}
try {
diff --git a/services/core/java/com/android/server/wm/WindowProcessController.java b/services/core/java/com/android/server/wm/WindowProcessController.java
index 91452c6663a2..eb5d7a8583bd 100644
--- a/services/core/java/com/android/server/wm/WindowProcessController.java
+++ b/services/core/java/com/android/server/wm/WindowProcessController.java
@@ -73,6 +73,7 @@ import android.util.Slog;
import android.util.proto.ProtoOutputStream;
import android.view.IRemoteAnimationRunner;
+import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.app.HeavyWeightSwitcherActivity;
import com.android.internal.protolog.common.ProtoLog;
@@ -115,7 +116,8 @@ public class WindowProcessController extends ConfigurationContainer<Configuratio
// communicate back to the activity manager side.
public final Object mOwner;
// List of packages running in the process
- final ArraySet<String> mPkgList = new ArraySet<>();
+ @GuardedBy("itself")
+ private final ArrayList<String> mPkgList = new ArrayList<>(1);
private final WindowProcessListener mListener;
private final ActivityTaskManagerService mAtm;
private final BackgroundLaunchProcessController mBgLaunchController;
@@ -640,18 +642,26 @@ public class WindowProcessController extends ConfigurationContainer<Configuratio
@HotPath(caller = HotPath.PROCESS_CHANGE)
public void addPackage(String packageName) {
- synchronized (mAtm.mGlobalLockWithoutBoost) {
- mPkgList.add(packageName);
+ synchronized (mPkgList) {
+ if (!mPkgList.contains(packageName)) {
+ mPkgList.add(packageName);
+ }
}
}
@HotPath(caller = HotPath.PROCESS_CHANGE)
public void clearPackageList() {
- synchronized (mAtm.mGlobalLockWithoutBoost) {
+ synchronized (mPkgList) {
mPkgList.clear();
}
}
+ boolean containsPackage(String packageName) {
+ synchronized (mPkgList) {
+ return mPkgList.contains(packageName);
+ }
+ }
+
void addActivityIfNeeded(ActivityRecord r) {
// even if we already track this activity, note down that it has been launched
setLastActivityLaunchTime(r.lastLaunchTime);