Loading services/core/java/com/android/server/wm/RecentTasks.java +18 −3 Original line number Original line Diff line number Diff line Loading @@ -551,6 +551,12 @@ class RecentTasks { long currentElapsedTime = SystemClock.elapsedRealtime(); long currentElapsedTime = SystemClock.elapsedRealtime(); for (int i = 0; i < tasks.size(); i++) { for (int i = 0; i < tasks.size(); i++) { Task task = tasks.get(i); Task task = tasks.get(i); // Remove the task restored from xml if any existing tasks match. if (findRemoveIndexForAddTask(task) >= 0) { tasks.remove(i); i--; continue; } task.lastActiveTime = currentElapsedTime - i; task.lastActiveTime = currentElapsedTime - i; } } Loading @@ -561,6 +567,7 @@ class RecentTasks { if (existedTaskIds.size() > 0) { if (existedTaskIds.size() > 0) { syncPersistentTaskIdsLocked(); syncPersistentTaskIdsLocked(); } } mTaskNotificationController.notifyTaskListUpdated(); } } private boolean isRecentTasksLoaded(int userId) { private boolean isRecentTasksLoaded(int userId) { Loading Loading @@ -679,26 +686,34 @@ class RecentTasks { if (isRecentTasksLoaded(userId)) { if (isRecentTasksLoaded(userId)) { Slog.i(TAG, "Unloading recents for user " + userId + " from memory."); Slog.i(TAG, "Unloading recents for user " + userId + " from memory."); mUsersWithRecentsLoaded.delete(userId); mUsersWithRecentsLoaded.delete(userId); removeTasksForUserLocked(userId); removeTasksForUserFromMemoryLocked(userId); } } mPersistedTaskIds.delete(userId); mPersistedTaskIds.delete(userId); mTaskPersister.unloadUserDataFromMemory(userId); mTaskPersister.unloadUserDataFromMemory(userId); } } /** Remove recent tasks for a user. */ /** Remove recent tasks for a user. */ private void removeTasksForUserLocked(int userId) { private void removeTasksForUserFromMemoryLocked(int userId) { if (userId <= 0) { if (userId <= 0) { Slog.i(TAG, "Can't remove recent task on user " + userId); Slog.i(TAG, "Can't remove recent task on user " + userId); return; return; } } boolean notifyTaskUpdated = false; for (int i = mTasks.size() - 1; i >= 0; --i) { for (int i = mTasks.size() - 1; i >= 0; --i) { Task task = mTasks.get(i); Task task = mTasks.get(i); if (task.mUserId == userId) { if (task.mUserId == userId) { ProtoLog.i(WM_DEBUG_TASKS, "remove RecentTask %s when finishing user " ProtoLog.i(WM_DEBUG_TASKS, "remove RecentTask %s when finishing user " + "%d", task, userId); + "%d", task, userId); remove(task); mTasks.remove(task); mService.mWindowManager.mSnapshotController.mTaskSnapshotController .removeSnapshotCache(task.mTaskId); // Only notify if list has changed. notifyTaskUpdated = true; } } } if (notifyTaskUpdated) { mTaskNotificationController.notifyTaskListUpdated(); } } } } Loading Loading
services/core/java/com/android/server/wm/RecentTasks.java +18 −3 Original line number Original line Diff line number Diff line Loading @@ -551,6 +551,12 @@ class RecentTasks { long currentElapsedTime = SystemClock.elapsedRealtime(); long currentElapsedTime = SystemClock.elapsedRealtime(); for (int i = 0; i < tasks.size(); i++) { for (int i = 0; i < tasks.size(); i++) { Task task = tasks.get(i); Task task = tasks.get(i); // Remove the task restored from xml if any existing tasks match. if (findRemoveIndexForAddTask(task) >= 0) { tasks.remove(i); i--; continue; } task.lastActiveTime = currentElapsedTime - i; task.lastActiveTime = currentElapsedTime - i; } } Loading @@ -561,6 +567,7 @@ class RecentTasks { if (existedTaskIds.size() > 0) { if (existedTaskIds.size() > 0) { syncPersistentTaskIdsLocked(); syncPersistentTaskIdsLocked(); } } mTaskNotificationController.notifyTaskListUpdated(); } } private boolean isRecentTasksLoaded(int userId) { private boolean isRecentTasksLoaded(int userId) { Loading Loading @@ -679,26 +686,34 @@ class RecentTasks { if (isRecentTasksLoaded(userId)) { if (isRecentTasksLoaded(userId)) { Slog.i(TAG, "Unloading recents for user " + userId + " from memory."); Slog.i(TAG, "Unloading recents for user " + userId + " from memory."); mUsersWithRecentsLoaded.delete(userId); mUsersWithRecentsLoaded.delete(userId); removeTasksForUserLocked(userId); removeTasksForUserFromMemoryLocked(userId); } } mPersistedTaskIds.delete(userId); mPersistedTaskIds.delete(userId); mTaskPersister.unloadUserDataFromMemory(userId); mTaskPersister.unloadUserDataFromMemory(userId); } } /** Remove recent tasks for a user. */ /** Remove recent tasks for a user. */ private void removeTasksForUserLocked(int userId) { private void removeTasksForUserFromMemoryLocked(int userId) { if (userId <= 0) { if (userId <= 0) { Slog.i(TAG, "Can't remove recent task on user " + userId); Slog.i(TAG, "Can't remove recent task on user " + userId); return; return; } } boolean notifyTaskUpdated = false; for (int i = mTasks.size() - 1; i >= 0; --i) { for (int i = mTasks.size() - 1; i >= 0; --i) { Task task = mTasks.get(i); Task task = mTasks.get(i); if (task.mUserId == userId) { if (task.mUserId == userId) { ProtoLog.i(WM_DEBUG_TASKS, "remove RecentTask %s when finishing user " ProtoLog.i(WM_DEBUG_TASKS, "remove RecentTask %s when finishing user " + "%d", task, userId); + "%d", task, userId); remove(task); mTasks.remove(task); mService.mWindowManager.mSnapshotController.mTaskSnapshotController .removeSnapshotCache(task.mTaskId); // Only notify if list has changed. notifyTaskUpdated = true; } } } if (notifyTaskUpdated) { mTaskNotificationController.notifyTaskListUpdated(); } } } } Loading