Moved mRecentTasks to ActivityManagerTaskService (4/n)
Test: Existing tests pass
Test: go/wm-smoke-auto
Bug: 80414790
Change-Id: I7e48eaf66200f689757578461076e9288b862b33
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 77826d4..08066e5 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -686,11 +686,6 @@
private AppTimeTracker mCurAppTimeTracker;
/**
- * List of intents that were used to start the most recent tasks.
- */
- private final RecentTasks mRecentTasks;
-
- /**
* The package name of the DeviceOwner. This package is not permitted to have its data cleared.
*/
String mDeviceOwnerName;
@@ -2902,7 +2897,6 @@
mProcessCpuThread = null;
mProcessStats = null;
mProviderMap = null;
- mRecentTasks = null;
mServices = null;
mStackSupervisor = null;
mSystemThread = null;
@@ -3008,8 +3002,6 @@
mTaskChangeNotificationController =
new TaskChangeNotificationController(this, mStackSupervisor, mHandler);
mActivityStartController = new ActivityStartController(this);
- mRecentTasks = createRecentTasks();
- mStackSupervisor.setRecentTasks(mRecentTasks);
mLockTaskController = new LockTaskController(mContext, mStackSupervisor, mHandler);
mLifecycleManager = new ClientLifecycleManager();
@@ -3071,14 +3063,6 @@
return supervisor;
}
- protected RecentTasks createRecentTasks() {
- return new RecentTasks(this, mStackSupervisor);
- }
-
- RecentTasks getRecentTasks() {
- return mRecentTasks;
- }
-
public void setSystemServiceManager(SystemServiceManager mgr) {
mSystemServiceManager = mgr;
}
@@ -3108,7 +3092,7 @@
}
void onUserStoppedLocked(int userId) {
- mRecentTasks.unloadUserDataFromMemoryLocked(userId);
+ mActivityTaskManager.getRecentTasks().unloadUserDataFromMemoryLocked(userId);
mAllowAppSwitchUids.remove(userId);
}
@@ -5603,7 +5587,7 @@
if (appInfo != null) {
forceStopPackageLocked(packageName, appInfo.uid, "clear data");
- mRecentTasks.removeTasksByPackageName(packageName, resolvedUserId);
+ mActivityTaskManager.getRecentTasks().removeTasksByPackageName(packageName, resolvedUserId);
}
}
@@ -6221,7 +6205,7 @@
}
// Clean-up disabled tasks
- mRecentTasks.cleanupDisabledPackageTasksLocked(packageName, disabledClasses, userId);
+ mActivityTaskManager.getRecentTasks().cleanupDisabledPackageTasksLocked(packageName, disabledClasses, userId);
// Clean-up disabled services.
mServices.bringDownDisabledPackageServicesLocked(
@@ -7833,7 +7817,7 @@
* This can be called with or without the global lock held.
*/
void enforceCallerIsRecentsOrHasPermission(String permission, String func) {
- if (!mRecentTasks.isCallerRecents(Binder.getCallingUid())) {
+ if (!mActivityTaskManager.getRecentTasks().isCallerRecents(Binder.getCallingUid())) {
enforceCallingPermission(permission, func);
}
}
@@ -9296,7 +9280,7 @@
}
boolean isGetTasksAllowed(String caller, int callingPid, int callingUid) {
- if (mRecentTasks.isCallerRecents(callingUid)) {
+ if (mActivityTaskManager.getRecentTasks().isCallerRecents(callingUid)) {
// Always allow the recents component to get tasks
return true;
}
@@ -11011,7 +10995,7 @@
/** Pokes the task persister. */
void notifyTaskPersisterLocked(TaskRecord task, boolean flush) {
- mRecentTasks.notifyTaskPersisterLocked(task, flush);
+ mActivityTaskManager.getRecentTasks().notifyTaskPersisterLocked(task, flush);
}
@Override
@@ -11162,7 +11146,7 @@
return true;
}
- if (mRecentTasks.isCallerRecents(sourceUid)) {
+ if (mActivityTaskManager.getRecentTasks().isCallerRecents(sourceUid)) {
return true;
}
@@ -12362,7 +12346,7 @@
mVrController.onSystemReady();
// Make sure we have the current profile info, since it is needed for security checks.
mUserController.onSystemReady();
- mRecentTasks.onSystemReadyLocked();
+ mActivityTaskManager.getRecentTasks().onSystemReadyLocked();
mAppOpsService.systemReady();
mSystemReady = true;
}
@@ -13387,8 +13371,8 @@
}
} else if ("recents".equals(cmd) || "r".equals(cmd)) {
synchronized (this) {
- if (mRecentTasks != null) {
- mRecentTasks.dump(pw, true /* dumpAll */, dumpPackage);
+ if (mActivityTaskManager.getRecentTasks() != null) {
+ mActivityTaskManager.getRecentTasks().dump(pw, true /* dumpAll */, dumpPackage);
}
}
} else if ("binder-proxies".equals(cmd)) {
@@ -13591,8 +13575,8 @@
if (dumpAll) {
pw.println("-------------------------------------------------------------------------------");
}
- if (mRecentTasks != null) {
- mRecentTasks.dump(pw, dumpAll, dumpPackage);
+ if (mActivityTaskManager.getRecentTasks() != null) {
+ mActivityTaskManager.getRecentTasks().dump(pw, dumpAll, dumpPackage);
}
pw.println();
if (dumpAll) {
@@ -13668,8 +13652,8 @@
if (dumpAll) {
pw.println("-------------------------------------------------------------------------------");
}
- if (mRecentTasks != null) {
- mRecentTasks.dump(pw, dumpAll, dumpPackage);
+ if (mActivityTaskManager.getRecentTasks() != null) {
+ mActivityTaskManager.getRecentTasks().dump(pw, dumpAll, dumpPackage);
}
pw.println();
if (dumpAll) {
@@ -18615,14 +18599,16 @@
forceStopPackageLocked(list[i], -1, false, true, true,
false, false, userId, "storage unmount");
}
- mRecentTasks.cleanupLocked(UserHandle.USER_ALL);
+ mActivityTaskManager.getRecentTasks().cleanupLocked(
+ UserHandle.USER_ALL);
sendPackageBroadcastLocked(
ApplicationThreadConstants.EXTERNAL_STORAGE_UNAVAILABLE,
list, userId);
}
break;
case Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE:
- mRecentTasks.cleanupLocked(UserHandle.USER_ALL);
+ mActivityTaskManager.getRecentTasks().cleanupLocked(
+ UserHandle.USER_ALL);
break;
case Intent.ACTION_PACKAGE_REMOVED:
case Intent.ACTION_PACKAGE_CHANGED:
@@ -18655,7 +18641,7 @@
removeUriPermissionsForPackageLocked(ssp, userId, true,
false);
- mRecentTasks.removeTasksByPackageName(ssp, userId);
+ mActivityTaskManager.getRecentTasks().removeTasksByPackageName(ssp, userId);
mServices.forceStopPackageLocked(ssp, userId);
mAppWarnings.onPackageUninstalled(ssp);
@@ -18685,7 +18671,7 @@
Intent.EXTRA_USER_HANDLE, UserHandle.USER_NULL);
synchronized(ActivityManagerService.this) {
- mRecentTasks.onPackagesSuspendedChanged(
+ mActivityTaskManager.getRecentTasks().onPackagesSuspendedChanged(
packageNames, suspended, userHandle);
}
break;
diff --git a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java
index 0e78d06..e6c3475 100644
--- a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java
+++ b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java
@@ -2760,7 +2760,7 @@
int runWrite(PrintWriter pw) {
mInternal.enforceCallingPermission(android.Manifest.permission.SET_ACTIVITY_WATCHER,
"registerUidObserver()");
- mInternal.getRecentTasks().flush();
+ mInternal.mActivityTaskManager.getRecentTasks().flush();
pw.println("All tasks persisted.");
return 0;
}
diff --git a/services/core/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java
index 35f3c09..121f732 100644
--- a/services/core/java/com/android/server/am/ActivityRecord.java
+++ b/services/core/java/com/android/server/am/ActivityRecord.java
@@ -1099,7 +1099,7 @@
return true;
}
// Allow the recents component to launch the home activity.
- final RecentTasks recentTasks = mStackSupervisor.mService.getRecentTasks();
+ final RecentTasks recentTasks = mStackSupervisor.mService.mActivityTaskManager.getRecentTasks();
if (recentTasks != null && recentTasks.isCallerRecents(uid)) {
return true;
}
@@ -1131,8 +1131,8 @@
// We only allow home activities to be resizeable if they explicitly requested it.
info.resizeMode = RESIZE_MODE_UNRESIZEABLE;
}
- } else if (realActivity.getClassName().contains(LEGACY_RECENTS_PACKAGE_NAME) ||
- service.getRecentTasks().isRecentsComponent(realActivity, appInfo.uid)) {
+ } else if (realActivity.getClassName().contains(LEGACY_RECENTS_PACKAGE_NAME)
+ || service.mActivityTaskManager.getRecentTasks().isRecentsComponent(realActivity, appInfo.uid)) {
activityType = ACTIVITY_TYPE_RECENTS;
} else if (options != null && options.getLaunchActivityType() == ACTIVITY_TYPE_ASSISTANT
&& canLaunchAssistActivity(launchedFromPackage)) {
@@ -2280,7 +2280,7 @@
final File iconFile = new File(TaskPersister.getUserImagesDir(task.userId),
iconFilename);
final String iconFilePath = iconFile.getAbsolutePath();
- service.getRecentTasks().saveImage(icon, iconFilePath);
+ service.mActivityTaskManager.getRecentTasks().saveImage(icon, iconFilePath);
_taskDescription.setIconFilename(iconFilePath);
}
taskDescription = _taskDescription;
diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
index 39b5515..68145a0 100644
--- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
@@ -1746,8 +1746,8 @@
String resultWho, int requestCode, int callingPid, int callingUid,
String callingPackage, boolean ignoreTargetSecurity, boolean launchingInTask,
ProcessRecord callerApp, ActivityRecord resultRecord, ActivityStack resultStack) {
- final boolean isCallerRecents = mService.getRecentTasks() != null &&
- mService.getRecentTasks().isCallerRecents(callingUid);
+ final boolean isCallerRecents = mService.mActivityTaskManager.getRecentTasks() != null
+ && mService.mActivityTaskManager.getRecentTasks().isCallerRecents(callingUid);
final int startAnyPerm = mService.checkPermission(START_ANY_ACTIVITY, callingPid,
callingUid);
if (startAnyPerm == PERMISSION_GRANTED || (isCallerRecents && launchingInTask)) {
diff --git a/services/core/java/com/android/server/am/ActivityTaskManagerService.java b/services/core/java/com/android/server/am/ActivityTaskManagerService.java
index ab48dd2..bf96643 100644
--- a/services/core/java/com/android/server/am/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityTaskManagerService.java
@@ -173,12 +173,13 @@
private static final String TAG_VISIBILITY = TAG + POSTFIX_VISIBILITY;
private static final String TAG_LOCKTASK = TAG + POSTFIX_LOCKTASK;
- private Context mContext;
- private ActivityManagerService mAm;
+ Context mContext;
+ ActivityManagerService mAm;
/* Global service lock used by the package the owns this service. */
Object mGlobalLock;
- private ActivityStackSupervisor mStackSupervisor;
-
+ ActivityStackSupervisor mStackSupervisor;
+ /** List of intents that were used to start the most recent tasks. */
+ private RecentTasks mRecentTasks;
/** State of external calls telling us if the device is awake or asleep. */
private boolean mKeyguardShown = false;
@@ -232,6 +233,16 @@
mAm = am;
mGlobalLock = mAm;
mStackSupervisor = mAm.mStackSupervisor;
+ mRecentTasks = createRecentTasks();
+ mStackSupervisor.setRecentTasks(mRecentTasks);
+ }
+
+ protected RecentTasks createRecentTasks() {
+ return new RecentTasks(this, mStackSupervisor);
+ }
+
+ RecentTasks getRecentTasks() {
+ return mRecentTasks;
}
private void start() {
@@ -653,8 +664,8 @@
final long origId = Binder.clearCallingIdentity();
try {
synchronized (mGlobalLock) {
- final ComponentName recentsComponent = mAm.getRecentTasks().getRecentsComponent();
- final int recentsUid = mAm.getRecentTasks().getRecentsComponentUid();
+ final ComponentName recentsComponent = mRecentTasks.getRecentsComponent();
+ final int recentsUid = mRecentTasks.getRecentsComponentUid();
// Start a new recents animation
final RecentsAnimation anim = new RecentsAnimation(mAm, mStackSupervisor,
@@ -1640,7 +1651,7 @@
== PackageManager.PERMISSION_GRANTED;
synchronized (mGlobalLock) {
- return mAm.getRecentTasks().getRecentTasks(maxNum, flags, allowed, detailed, userId,
+ return mRecentTasks.getRecentTasks(maxNum, flags, allowed, detailed, userId,
callingUid);
}
}
@@ -1833,7 +1844,7 @@
long ident = Binder.clearCallingIdentity();
try {
synchronized (mGlobalLock) {
- return mAm.getRecentTasks().getAppTasksList(callingUid, callingPackage);
+ return mRecentTasks.getAppTasksList(callingUid, callingPackage);
}
} finally {
Binder.restoreCallingIdentity(ident);
@@ -2000,7 +2011,7 @@
final TaskRecord task = stack.createTaskRecord(
mStackSupervisor.getNextTaskIdForUserLocked(r.userId), ainfo, intent,
null /* voiceSession */, null /* voiceInteractor */, !ON_TOP);
- if (!mAm.getRecentTasks().addToBottom(task)) {
+ if (!mRecentTasks.addToBottom(task)) {
// The app has too many tasks already and we can't add any more
stack.removeTask(task, "addAppTask", REMOVE_TASK_MODE_DESTROYING);
return INVALID_TASK_ID;
@@ -2153,7 +2164,7 @@
throw new IllegalArgumentException("Bad file path: " + filePath
+ " passed for userId " + userId);
}
- return mAm.getRecentTasks().getTaskDescriptionIcon(filePath);
+ return mRecentTasks.getTaskDescriptionIcon(filePath);
}
@Override
@@ -3535,12 +3546,12 @@
@Override
public boolean isCallerRecents(int callingUid) {
- return mAm.getRecentTasks().isCallerRecents(callingUid);
+ return getRecentTasks().isCallerRecents(callingUid);
}
@Override
public boolean isRecentsComponentHomeActivity(int userId) {
- return mAm.getRecentTasks().isRecentsComponentHomeActivity(userId);
+ return getRecentTasks().isRecentsComponentHomeActivity(userId);
}
@Override
diff --git a/services/core/java/com/android/server/am/AppTaskImpl.java b/services/core/java/com/android/server/am/AppTaskImpl.java
index 5f5a504..4a7c21c 100644
--- a/services/core/java/com/android/server/am/AppTaskImpl.java
+++ b/services/core/java/com/android/server/am/AppTaskImpl.java
@@ -35,12 +35,12 @@
* only the process that calls getAppTasks() can call the AppTask methods.
*/
class AppTaskImpl extends IAppTask.Stub {
- private ActivityManagerService mService;
+ private ActivityTaskManagerService mService;
private int mTaskId;
private int mCallingUid;
- public AppTaskImpl(ActivityManagerService service, int taskId, int callingUid) {
+ public AppTaskImpl(ActivityTaskManagerService service, int taskId, int callingUid) {
mService = service;
mTaskId = taskId;
mCallingUid = callingUid;
@@ -57,7 +57,7 @@
public void finishAndRemoveTask() {
checkCaller();
- synchronized (mService) {
+ synchronized (mService.mGlobalLock) {
long origId = Binder.clearCallingIdentity();
try {
// We remove the task from recents to preserve backwards
@@ -75,7 +75,7 @@
public ActivityManager.RecentTaskInfo getTaskInfo() {
checkCaller();
- synchronized (mService) {
+ synchronized (mService.mGlobalLock) {
long origId = Binder.clearCallingIdentity();
try {
TaskRecord tr = mService.mStackSupervisor.anyTaskForIdLocked(mTaskId,
@@ -115,7 +115,7 @@
int callingUser = UserHandle.getCallingUserId();
TaskRecord tr;
IApplicationThread appThread;
- synchronized (mService) {
+ synchronized (mService.mGlobalLock) {
tr = mService.mStackSupervisor.anyTaskForIdLocked(mTaskId,
MATCH_TASK_IN_STACKS_OR_RECENT_TASKS);
if (tr == null) {
@@ -127,7 +127,7 @@
}
}
- return mService.getActivityStartController().obtainStarter(intent, "AppTaskImpl")
+ return mService.mAm.getActivityStartController().obtainStarter(intent, "AppTaskImpl")
.setCaller(appThread)
.setCallingPackage(callingPackage)
.setResolvedType(resolvedType)
@@ -141,7 +141,7 @@
public void setExcludeFromRecents(boolean exclude) {
checkCaller();
- synchronized (mService) {
+ synchronized (mService.mGlobalLock) {
long origId = Binder.clearCallingIdentity();
try {
TaskRecord tr = mService.mStackSupervisor.anyTaskForIdLocked(mTaskId,
diff --git a/services/core/java/com/android/server/am/RecentTasks.java b/services/core/java/com/android/server/am/RecentTasks.java
index 810b9fd..5390127 100644
--- a/services/core/java/com/android/server/am/RecentTasks.java
+++ b/services/core/java/com/android/server/am/RecentTasks.java
@@ -138,7 +138,8 @@
* Save recent tasks information across reboots.
*/
private final TaskPersister mTaskPersister;
- private final ActivityManagerService mService;
+ private final ActivityTaskManagerService mService;
+ private final ActivityStackSupervisor mSupervisor;
private final UserController mUserController;
/**
@@ -180,20 +181,22 @@
private final TaskActivitiesReport mTmpReport = new TaskActivitiesReport();
@VisibleForTesting
- RecentTasks(ActivityManagerService service, TaskPersister taskPersister,
+ RecentTasks(ActivityTaskManagerService service, TaskPersister taskPersister,
UserController userController) {
mService = service;
+ mSupervisor = mService.mStackSupervisor;
mUserController = userController;
mTaskPersister = taskPersister;
mGlobalMaxNumTasks = ActivityTaskManager.getMaxRecentTasksStatic();
mHasVisibleRecentTasks = true;
}
- RecentTasks(ActivityManagerService service, ActivityStackSupervisor stackSupervisor) {
+ RecentTasks(ActivityTaskManagerService service, ActivityStackSupervisor stackSupervisor) {
final File systemDir = Environment.getDataSystemDirectory();
final Resources res = service.mContext.getResources();
mService = service;
- mUserController = service.mUserController;
+ mSupervisor = mService.mStackSupervisor;
+ mUserController = service.mAm.mUserController;
mTaskPersister = new TaskPersister(systemDir, stackSupervisor, service, this);
mGlobalMaxNumTasks = ActivityTaskManager.getMaxRecentTasksStatic();
mHasVisibleRecentTasks = res.getBoolean(com.android.internal.R.bool.config_hasRecents);
@@ -286,7 +289,7 @@
* @return whether the home app is also the active handler of recent tasks.
*/
boolean isRecentsComponentHomeActivity(int userId) {
- final ComponentName defaultHomeActivity = mService.getPackageManagerInternalLocked()
+ final ComponentName defaultHomeActivity = mService.mAm.getPackageManagerInternalLocked()
.getDefaultHomeActivity(userId);
return defaultHomeActivity != null && mRecentsComponent != null &&
defaultHomeActivity.getPackageName().equals(mRecentsComponent.getPackageName());
@@ -442,7 +445,7 @@
}
void flush() {
- synchronized (mService) {
+ synchronized (mService.mGlobalLock) {
syncPersistentTaskIdsLocked();
}
mTaskPersister.flush();
@@ -512,7 +515,7 @@
&& tr.realActivitySuspended != suspended) {
tr.realActivitySuspended = suspended;
if (suspended) {
- mService.mStackSupervisor.removeTaskByIdLocked(tr.taskId, false,
+ mSupervisor.removeTaskByIdLocked(tr.taskId, false,
REMOVE_FROM_RECENTS, "suspended-package");
}
notifyTaskPersisterLocked(tr, false);
@@ -526,7 +529,7 @@
}
for (int i = mTasks.size() - 1; i >= 0; --i) {
final TaskRecord tr = mTasks.get(i);
- if (tr.userId == userId && !mService.getLockTaskController().isTaskWhitelisted(tr)) {
+ if (tr.userId == userId && !mService.mAm.getLockTaskController().isTaskWhitelisted(tr)) {
remove(tr);
}
}
@@ -540,7 +543,7 @@
if (tr.userId != userId) continue;
if (!taskPackageName.equals(packageName)) continue;
- mService.mStackSupervisor.removeTaskByIdLocked(tr.taskId, true, REMOVE_FROM_RECENTS,
+ mSupervisor.removeTaskByIdLocked(tr.taskId, true, REMOVE_FROM_RECENTS,
"remove-package-task");
}
}
@@ -557,7 +560,7 @@
final boolean sameComponent = cn != null && cn.getPackageName().equals(packageName)
&& (filterByClasses == null || filterByClasses.contains(cn.getClassName()));
if (sameComponent) {
- mService.mStackSupervisor.removeTaskByIdLocked(tr.taskId, false,
+ mSupervisor.removeTaskByIdLocked(tr.taskId, false,
REMOVE_FROM_RECENTS, "disabled-package");
}
}
@@ -716,7 +719,7 @@
boolean getTasksAllowed, boolean getDetailedTasks, int userId, int callingUid) {
final boolean withExcluded = (flags & RECENT_WITH_EXCLUDED) != 0;
- if (!mService.isUserRunning(userId, FLAG_AND_UNLOCKED)) {
+ if (!mService.mAm.isUserRunning(userId, FLAG_AND_UNLOCKED)) {
Slog.i(TAG, "user " + userId + " is still locked. Cannot load recents");
return ParceledListSlice.emptyList();
}
@@ -1159,7 +1162,7 @@
}
// If we're in lock task mode, ignore the root task
- if (task == mService.getLockTaskController().getRootTask()) {
+ if (task == mService.mAm.getLockTaskController().getRootTask()) {
return false;
}
@@ -1206,7 +1209,7 @@
*/
protected boolean isTrimmable(TaskRecord task) {
final ActivityStack stack = task.getStack();
- final ActivityStack homeStack = mService.mStackSupervisor.mHomeStack;
+ final ActivityStack homeStack = mSupervisor.mHomeStack;
// No stack for task, just trim it
if (stack == null) {
diff --git a/services/core/java/com/android/server/am/TaskPersister.java b/services/core/java/com/android/server/am/TaskPersister.java
index 2689d6a..465fa67 100644
--- a/services/core/java/com/android/server/am/TaskPersister.java
+++ b/services/core/java/com/android/server/am/TaskPersister.java
@@ -83,7 +83,7 @@
private static final String TAG_TASK = "task";
- private final ActivityManagerService mService;
+ private final ActivityTaskManagerService mService;
private final ActivityStackSupervisor mStackSupervisor;
private final RecentTasks mRecentTasks;
private final SparseArray<SparseBooleanArray> mTaskIdsInFile = new SparseArray<>();
@@ -125,7 +125,7 @@
ArrayList<WriteQueueItem> mWriteQueue = new ArrayList<WriteQueueItem>();
TaskPersister(File systemDir, ActivityStackSupervisor stackSupervisor,
- ActivityManagerService service, RecentTasks recentTasks) {
+ ActivityTaskManagerService service, RecentTasks recentTasks) {
final File legacyImagesDir = new File(systemDir, IMAGES_DIRNAME);
if (legacyImagesDir.exists()) {
@@ -565,7 +565,7 @@
private void writeTaskIdsFiles() {
SparseArray<SparseBooleanArray> changedTaskIdsPerUser = new SparseArray<>();
- synchronized (mService) {
+ synchronized (mService.mGlobalLock) {
for (int userId : mRecentTasks.usersWithRecentsLoadedLocked()) {
SparseBooleanArray taskIdsToSave = mRecentTasks.getTaskIdsForUser(userId);
SparseBooleanArray persistedIdsInFile = mTaskIdsInFile.get(userId);
@@ -586,7 +586,7 @@
private void removeObsoleteFiles(ArraySet<Integer> persistentTaskIds) {
int[] candidateUserIds;
- synchronized (mService) {
+ synchronized (mService.mGlobalLock) {
// Remove only from directories of the users who have recents in memory synchronized
// with persistent storage.
candidateUserIds = mRecentTasks.usersWithRecentsLoadedLocked();
@@ -652,10 +652,10 @@
if (probablyDone) {
if (DEBUG) Slog.d(TAG, "Looking for obsolete files.");
persistentTaskIds.clear();
- synchronized (mService) {
+ synchronized (mService.mGlobalLock) {
if (DEBUG) Slog.d(TAG, "mRecents=" + mRecentTasks);
mRecentTasks.getPersistableTaskIds(persistentTaskIds);
- mService.mWindowManager.removeObsoleteTaskFiles(persistentTaskIds,
+ mService.mAm.mWindowManager.removeObsoleteTaskFiles(persistentTaskIds,
mRecentTasks.usersWithRecentsLoadedLocked());
}
removeObsoleteFiles(persistentTaskIds);
@@ -736,7 +736,7 @@
StringWriter stringWriter = null;
TaskRecord task = ((TaskWriteQueueItem) item).mTask;
if (DEBUG) Slog.d(TAG, "Writing task=" + task);
- synchronized (mService) {
+ synchronized (mService.mGlobalLock) {
if (task.inRecents) {
// Still there.
try {
diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java
index 18c0957..2fbe56b 100644
--- a/services/core/java/com/android/server/am/UserController.java
+++ b/services/core/java/com/android/server/am/UserController.java
@@ -2187,7 +2187,7 @@
void loadUserRecents(int userId) {
synchronized (mService) {
- mService.getRecentTasks().loadUserRecentsLocked(userId);
+ mService.mActivityTaskManager.getRecentTasks().loadUserRecentsLocked(userId);
}
}
@@ -2253,7 +2253,7 @@
}
protected boolean isCallerRecents(int callingUid) {
- return mService.getRecentTasks().isCallerRecents(callingUid);
+ return mService.mActivityTaskManager.getRecentTasks().isCallerRecents(callingUid);
}
}
}