Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1cf4290c authored by Wei Sheng Shih's avatar Wei Sheng Shih Committed by Android (Google) Code Review
Browse files

Merge "Do not delete task snapshot files when user stopped." into main

parents d8aa9a2a 78d1ad2c
Loading
Loading
Loading
Loading
+18 −3
Original line number Original line Diff line number Diff line
@@ -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;
        }
        }


@@ -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) {
@@ -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();
        }
        }
    }
    }