Loading services/core/java/com/android/server/wm/ActivityRecord.java +1 −1 Original line number Diff line number Diff line Loading @@ -3254,7 +3254,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A rootTask.moveToFront(reason, task); // Report top activity change to tracking services and WM if (mRootWindowContainer.getTopResumedActivity() == this) { mAtmService.setResumedActivityUncheckLocked(this, reason); mAtmService.setLastResumedActivityUncheckLocked(this, reason); } return true; } Loading services/core/java/com/android/server/wm/ActivityTaskManagerService.java +1 −1 Original line number Diff line number Diff line Loading @@ -4624,7 +4624,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { } /** Update AMS states when an activity is resumed. */ void setResumedActivityUncheckLocked(ActivityRecord r, String reason) { void setLastResumedActivityUncheckLocked(ActivityRecord r, String reason) { final Task task = r.getTask(); if (task.isActivityTypeStandard()) { if (mCurAppTimeTracker != r.appTimeTracker) { Loading services/core/java/com/android/server/wm/ActivityTaskSupervisor.java +7 −1 Original line number Diff line number Diff line Loading @@ -2083,7 +2083,7 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { * activity releases the top state and reports back, message about acquiring top state will be * sent to the new top resumed activity. */ void updateTopResumedActivityIfNeeded() { void updateTopResumedActivityIfNeeded(String reason) { final ActivityRecord prevTopActivity = mTopResumedActivity; final Task topRootTask = mRootWindowContainer.getTopDisplayFocusedRootTask(); if (topRootTask == null || topRootTask.getTopResumedActivity() == prevTopActivity) { Loading Loading @@ -2119,6 +2119,12 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { } mService.updateOomAdj(); } // Update the last resumed activity and focused app when the top resumed activity changed // because the new top resumed activity might be already resumed and thus won't have // activity state change to update the records to AMS. if (mTopResumedActivity != null) { mService.setLastResumedActivityUncheckLocked(mTopResumedActivity, reason); } scheduleTopResumedActivityStateIfNeeded(); mService.updateTopApp(mTopResumedActivity); Loading services/core/java/com/android/server/wm/RootWindowContainer.java +1 −1 Original line number Diff line number Diff line Loading @@ -514,7 +514,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> void onChildPositionChanged(WindowContainer child) { mWmService.updateFocusedWindowLocked(UPDATE_FOCUS_NORMAL, !mWmService.mPerDisplayFocusEnabled /* updateInputWindows */); mTaskSupervisor.updateTopResumedActivityIfNeeded(); mTaskSupervisor.updateTopResumedActivityIfNeeded("onChildPositionChanged"); } @Override Loading services/core/java/com/android/server/wm/Task.java +2 −6 Original line number Diff line number Diff line Loading @@ -920,7 +920,7 @@ class Task extends TaskFragment { // If the original state is resumed, there is no state change to update focused app. // So here makes sure the activity focus is set if it is the top. if (r.isState(RESUMED) && r == mRootWindowContainer.getTopResumedActivity()) { mAtmService.setResumedActivityUncheckLocked(r, reason); mAtmService.setLastResumedActivityUncheckLocked(r, reason); } } if (!animate) { Loading Loading @@ -2439,11 +2439,7 @@ class Task extends TaskFragment { focusableTask.moveToFront(myReason); // Top display focused root task is changed, update top resumed activity if needed. if (rootTask.getTopResumedActivity() != null) { mTaskSupervisor.updateTopResumedActivityIfNeeded(); // Set focused app directly because if the next focused activity is already resumed // (e.g. the next top activity is on a different display), there won't have activity // state change to update it. mAtmService.setResumedActivityUncheckLocked(rootTask.getTopResumedActivity(), reason); mTaskSupervisor.updateTopResumedActivityIfNeeded(reason); } return rootTask; } Loading Loading
services/core/java/com/android/server/wm/ActivityRecord.java +1 −1 Original line number Diff line number Diff line Loading @@ -3254,7 +3254,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A rootTask.moveToFront(reason, task); // Report top activity change to tracking services and WM if (mRootWindowContainer.getTopResumedActivity() == this) { mAtmService.setResumedActivityUncheckLocked(this, reason); mAtmService.setLastResumedActivityUncheckLocked(this, reason); } return true; } Loading
services/core/java/com/android/server/wm/ActivityTaskManagerService.java +1 −1 Original line number Diff line number Diff line Loading @@ -4624,7 +4624,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { } /** Update AMS states when an activity is resumed. */ void setResumedActivityUncheckLocked(ActivityRecord r, String reason) { void setLastResumedActivityUncheckLocked(ActivityRecord r, String reason) { final Task task = r.getTask(); if (task.isActivityTypeStandard()) { if (mCurAppTimeTracker != r.appTimeTracker) { Loading
services/core/java/com/android/server/wm/ActivityTaskSupervisor.java +7 −1 Original line number Diff line number Diff line Loading @@ -2083,7 +2083,7 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { * activity releases the top state and reports back, message about acquiring top state will be * sent to the new top resumed activity. */ void updateTopResumedActivityIfNeeded() { void updateTopResumedActivityIfNeeded(String reason) { final ActivityRecord prevTopActivity = mTopResumedActivity; final Task topRootTask = mRootWindowContainer.getTopDisplayFocusedRootTask(); if (topRootTask == null || topRootTask.getTopResumedActivity() == prevTopActivity) { Loading Loading @@ -2119,6 +2119,12 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { } mService.updateOomAdj(); } // Update the last resumed activity and focused app when the top resumed activity changed // because the new top resumed activity might be already resumed and thus won't have // activity state change to update the records to AMS. if (mTopResumedActivity != null) { mService.setLastResumedActivityUncheckLocked(mTopResumedActivity, reason); } scheduleTopResumedActivityStateIfNeeded(); mService.updateTopApp(mTopResumedActivity); Loading
services/core/java/com/android/server/wm/RootWindowContainer.java +1 −1 Original line number Diff line number Diff line Loading @@ -514,7 +514,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> void onChildPositionChanged(WindowContainer child) { mWmService.updateFocusedWindowLocked(UPDATE_FOCUS_NORMAL, !mWmService.mPerDisplayFocusEnabled /* updateInputWindows */); mTaskSupervisor.updateTopResumedActivityIfNeeded(); mTaskSupervisor.updateTopResumedActivityIfNeeded("onChildPositionChanged"); } @Override Loading
services/core/java/com/android/server/wm/Task.java +2 −6 Original line number Diff line number Diff line Loading @@ -920,7 +920,7 @@ class Task extends TaskFragment { // If the original state is resumed, there is no state change to update focused app. // So here makes sure the activity focus is set if it is the top. if (r.isState(RESUMED) && r == mRootWindowContainer.getTopResumedActivity()) { mAtmService.setResumedActivityUncheckLocked(r, reason); mAtmService.setLastResumedActivityUncheckLocked(r, reason); } } if (!animate) { Loading Loading @@ -2439,11 +2439,7 @@ class Task extends TaskFragment { focusableTask.moveToFront(myReason); // Top display focused root task is changed, update top resumed activity if needed. if (rootTask.getTopResumedActivity() != null) { mTaskSupervisor.updateTopResumedActivityIfNeeded(); // Set focused app directly because if the next focused activity is already resumed // (e.g. the next top activity is on a different display), there won't have activity // state change to update it. mAtmService.setResumedActivityUncheckLocked(rootTask.getTopResumedActivity(), reason); mTaskSupervisor.updateTopResumedActivityIfNeeded(reason); } return rootTask; } Loading