Merge "Fix empty stacks leaked after blocking background activity launches." into qt-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
9291a5af50
@@ -1419,6 +1419,13 @@ class ActivityStarter {
|
|||||||
stack.finishActivityLocked(mStartActivity, RESULT_CANCELED,
|
stack.finishActivityLocked(mStartActivity, RESULT_CANCELED,
|
||||||
null /* intentResultData */, "startActivity", true /* oomAdj */);
|
null /* intentResultData */, "startActivity", true /* oomAdj */);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Stack should also be detached from display and be removed if it's empty.
|
||||||
|
if (startedActivityStack != null && startedActivityStack.isAttached()
|
||||||
|
&& startedActivityStack.numActivities() == 0
|
||||||
|
&& !startedActivityStack.isActivityTypeHome()) {
|
||||||
|
startedActivityStack.remove();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
mService.mWindowManager.continueSurfaceLayout();
|
mService.mWindowManager.continueSurfaceLayout();
|
||||||
}
|
}
|
||||||
@@ -2289,15 +2296,17 @@ class ActivityStarter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private int setTaskFromReuseOrCreateNewTask(TaskRecord taskToAffiliate) {
|
private int setTaskFromReuseOrCreateNewTask(TaskRecord taskToAffiliate) {
|
||||||
|
if (mRestrictedBgActivity && (mReuseTask == null || !mReuseTask.containsAppUid(mCallingUid))
|
||||||
|
&& handleBackgroundActivityAbort(mStartActivity)) {
|
||||||
|
return START_ABORTED;
|
||||||
|
}
|
||||||
|
|
||||||
mTargetStack = computeStackFocus(mStartActivity, true, mLaunchFlags, mOptions);
|
mTargetStack = computeStackFocus(mStartActivity, true, mLaunchFlags, mOptions);
|
||||||
|
|
||||||
// Do no move the target stack to front yet, as we might bail if
|
// Do no move the target stack to front yet, as we might bail if
|
||||||
// isLockTaskModeViolation fails below.
|
// isLockTaskModeViolation fails below.
|
||||||
|
|
||||||
if (mReuseTask == null) {
|
if (mReuseTask == null) {
|
||||||
if (mRestrictedBgActivity && handleBackgroundActivityAbort(mStartActivity)) {
|
|
||||||
return START_ABORTED;
|
|
||||||
}
|
|
||||||
final TaskRecord task = mTargetStack.createTaskRecord(
|
final TaskRecord task = mTargetStack.createTaskRecord(
|
||||||
mSupervisor.getNextTaskIdForUserLocked(mStartActivity.mUserId),
|
mSupervisor.getNextTaskIdForUserLocked(mStartActivity.mUserId),
|
||||||
mNewTaskInfo != null ? mNewTaskInfo : mStartActivity.info,
|
mNewTaskInfo != null ? mNewTaskInfo : mStartActivity.info,
|
||||||
@@ -2310,11 +2319,6 @@ class ActivityStarter {
|
|||||||
if (DEBUG_TASKS) Slog.v(TAG_TASKS, "Starting new activity " + mStartActivity
|
if (DEBUG_TASKS) Slog.v(TAG_TASKS, "Starting new activity " + mStartActivity
|
||||||
+ " in new task " + mStartActivity.getTaskRecord());
|
+ " in new task " + mStartActivity.getTaskRecord());
|
||||||
} else {
|
} else {
|
||||||
if (mRestrictedBgActivity && !mReuseTask.containsAppUid(mCallingUid)) {
|
|
||||||
if (handleBackgroundActivityAbort(mStartActivity)) {
|
|
||||||
return START_ABORTED;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
addOrReparentStartingActivity(mReuseTask, "setTaskFromReuseOrCreateNewTask");
|
addOrReparentStartingActivity(mReuseTask, "setTaskFromReuseOrCreateNewTask");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user