Merge "Apply setAlwaysOnTop when recycling Task." into sc-v2-dev am: ee4ae77c5f
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15305884 Change-Id: I3e31cb5daf9253d83954fcabbca93de04e921045
This commit is contained in:
@@ -1559,6 +1559,7 @@ class ActivityStarter {
|
||||
TaskFragment inTaskFragment, boolean restrictedBgActivity,
|
||||
NeededUriGrants intentGrants) {
|
||||
int result = START_CANCELED;
|
||||
boolean startResultSuccessful = false;
|
||||
final Task startedActivityRootTask;
|
||||
|
||||
// Create a transition now to record the original intent of actions taken within
|
||||
@@ -1584,6 +1585,15 @@ class ActivityStarter {
|
||||
result = startActivityInner(r, sourceRecord, voiceSession, voiceInteractor,
|
||||
startFlags, doResume, options, inTask, inTaskFragment, restrictedBgActivity,
|
||||
intentGrants);
|
||||
startResultSuccessful = ActivityManager.isStartResultSuccessful(result);
|
||||
final boolean taskAlwaysOnTop = options != null && options.getTaskAlwaysOnTop();
|
||||
// Apply setAlwaysOnTop when starting an Activity is successful regardless of creating
|
||||
// a new Activity or recycling the existing Activity.
|
||||
if (taskAlwaysOnTop && startResultSuccessful) {
|
||||
final Task targetRootTask =
|
||||
mTargetRootTask != null ? mTargetRootTask : mTargetTask.getRootTask();
|
||||
targetRootTask.setAlwaysOnTop(true);
|
||||
}
|
||||
} finally {
|
||||
Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER);
|
||||
startedActivityRootTask = handleStartResult(r, result);
|
||||
@@ -1591,7 +1601,7 @@ class ActivityStarter {
|
||||
mSupervisor.mUserLeaving = false;
|
||||
|
||||
// Transition housekeeping
|
||||
if (!ActivityManager.isStartResultSuccessful(result)) {
|
||||
if (!startResultSuccessful) {
|
||||
if (newTransition != null) {
|
||||
newTransition.abort();
|
||||
}
|
||||
@@ -1755,11 +1765,6 @@ class ActivityStarter {
|
||||
|
||||
if (!mAvoidMoveToFront && mDoResume) {
|
||||
mTargetRootTask.getRootTask().moveToFront("reuseOrNewTask", targetTask);
|
||||
if (mOptions != null) {
|
||||
if (mOptions.getTaskAlwaysOnTop()) {
|
||||
mTargetRootTask.setAlwaysOnTop(true);
|
||||
}
|
||||
}
|
||||
if (!mTargetRootTask.isTopRootTaskInDisplayArea() && mService.mInternal.isDreaming()) {
|
||||
// Launching underneath dream activity (fullscreen, always-on-top). Run the launch-
|
||||
// -behind transition so the Activity gets created and starts in visible state.
|
||||
|
||||
Reference in New Issue
Block a user