Merge "Avoid adjusting top focused root task while clear task" into rvc-qpr-dev am: 84cc3c887d
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12399056 Change-Id: I85730707d56a2119200fa18cae694115cce4ca0f
This commit is contained in:
@@ -2543,7 +2543,9 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
|
|||||||
|
|
||||||
final ActivityStack stack = getRootTask();
|
final ActivityStack stack = getRootTask();
|
||||||
final boolean mayAdjustTop = (isState(RESUMED) || stack.mResumedActivity == null)
|
final boolean mayAdjustTop = (isState(RESUMED) || stack.mResumedActivity == null)
|
||||||
&& stack.isFocusedStackOnDisplay();
|
&& stack.isFocusedStackOnDisplay()
|
||||||
|
// Do not adjust focus task because the task will be reused to launch new activity.
|
||||||
|
&& !task.isClearingToReuseTask();
|
||||||
final boolean shouldAdjustGlobalFocus = mayAdjustTop
|
final boolean shouldAdjustGlobalFocus = mayAdjustTop
|
||||||
// It must be checked before {@link #makeFinishingLocked} is called, because a stack
|
// It must be checked before {@link #makeFinishingLocked} is called, because a stack
|
||||||
// is not visible if it only contains finishing activities.
|
// is not visible if it only contains finishing activities.
|
||||||
|
|||||||
@@ -2009,8 +2009,6 @@ class ActivityStarter {
|
|||||||
// of history or if it is finished immediately), thus disassociating the task. Also note
|
// of history or if it is finished immediately), thus disassociating the task. Also note
|
||||||
// that mReuseTask is reset as a result of {@link Task#performClearTaskLocked}
|
// that mReuseTask is reset as a result of {@link Task#performClearTaskLocked}
|
||||||
// launching another activity.
|
// launching another activity.
|
||||||
// TODO(b/36119896): We shouldn't trigger activity launches in this path since we are
|
|
||||||
// already launching one.
|
|
||||||
targetTask.performClearTaskLocked();
|
targetTask.performClearTaskLocked();
|
||||||
targetTask.setIntent(mStartActivity);
|
targetTask.setIntent(mStartActivity);
|
||||||
mAddingToTask = true;
|
mAddingToTask = true;
|
||||||
|
|||||||
@@ -1528,14 +1528,25 @@ class Task extends WindowContainer<WindowContainer> {
|
|||||||
*/
|
*/
|
||||||
void performClearTaskLocked() {
|
void performClearTaskLocked() {
|
||||||
mReuseTask = true;
|
mReuseTask = true;
|
||||||
performClearTask("clear-task-all");
|
mStackSupervisor.beginDeferResume();
|
||||||
mReuseTask = false;
|
try {
|
||||||
|
performClearTask("clear-task-all");
|
||||||
|
} finally {
|
||||||
|
mStackSupervisor.endDeferResume();
|
||||||
|
mReuseTask = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ActivityRecord performClearTaskForReuseLocked(ActivityRecord newR, int launchFlags) {
|
ActivityRecord performClearTaskForReuseLocked(ActivityRecord newR, int launchFlags) {
|
||||||
mReuseTask = true;
|
mReuseTask = true;
|
||||||
final ActivityRecord result = performClearTaskLocked(newR, launchFlags);
|
mStackSupervisor.beginDeferResume();
|
||||||
mReuseTask = false;
|
final ActivityRecord result;
|
||||||
|
try {
|
||||||
|
result = performClearTaskLocked(newR, launchFlags);
|
||||||
|
} finally {
|
||||||
|
mStackSupervisor.endDeferResume();
|
||||||
|
mReuseTask = false;
|
||||||
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user