Merge "Determine power hint behavior based on target activity." into oc-dr1-dev

This commit is contained in:
Bryce Lee
2017-07-24 22:07:47 +00:00
committed by Android (Google) Code Review
2 changed files with 12 additions and 7 deletions

View File

@@ -5170,11 +5170,14 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
// Work Challenge is present) let startActivityInPackage handle the intercepting. // Work Challenge is present) let startActivityInPackage handle the intercepting.
if (!mService.mUserController.shouldConfirmCredentials(task.userId) if (!mService.mUserController.shouldConfirmCredentials(task.userId)
&& task.getRootActivity() != null) { && task.getRootActivity() != null) {
mService.mActivityStarter.sendPowerHintForLaunchStartIfNeeded(true /* forceSend */); final ActivityRecord targetActivity = task.getTopActivity();
mService.mActivityStarter.sendPowerHintForLaunchStartIfNeeded(true /* forceSend */,
targetActivity);
mActivityMetricsLogger.notifyActivityLaunching(); mActivityMetricsLogger.notifyActivityLaunching();
mService.moveTaskToFrontLocked(task.taskId, 0, bOptions, true /* fromRecents */); mService.moveTaskToFrontLocked(task.taskId, 0, bOptions, true /* fromRecents */);
mActivityMetricsLogger.notifyActivityLaunched(ActivityManager.START_TASK_TO_FRONT, mActivityMetricsLogger.notifyActivityLaunched(ActivityManager.START_TASK_TO_FRONT,
task.getTopActivity()); targetActivity);
// If we are launching the task in the docked stack, put it into resizing mode so // If we are launching the task in the docked stack, put it into resizing mode so
// the window renders full-screen with the background filling the void. Also only // the window renders full-screen with the background filling the void. Also only

View File

@@ -969,7 +969,7 @@ class ActivityStarter {
return START_SUCCESS; return START_SUCCESS;
} }
void sendPowerHintForLaunchStartIfNeeded(boolean forceSend) { void sendPowerHintForLaunchStartIfNeeded(boolean forceSend, ActivityRecord targetActivity) {
boolean sendHint = forceSend; boolean sendHint = forceSend;
if (!sendHint) { if (!sendHint) {
@@ -978,7 +978,7 @@ class ActivityStarter {
final ActivityRecord resumedActivity = mSupervisor.getResumedActivityLocked(); final ActivityRecord resumedActivity = mSupervisor.getResumedActivityLocked();
sendHint = resumedActivity == null sendHint = resumedActivity == null
|| resumedActivity.app == null || resumedActivity.app == null
|| !resumedActivity.app.equals(mStartActivity.app); || !resumedActivity.app.equals(targetActivity.app);
} }
if (sendHint && mService.mLocalPowerManager != null) { if (sendHint && mService.mLocalPowerManager != null) {
@@ -1098,7 +1098,7 @@ class ActivityStarter {
} }
} }
sendPowerHintForLaunchStartIfNeeded(false /* forceSend */); sendPowerHintForLaunchStartIfNeeded(false /* forceSend */, reusedActivity);
reusedActivity = setTargetStackAndMoveToFrontIfNeeded(reusedActivity); reusedActivity = setTargetStackAndMoveToFrontIfNeeded(reusedActivity);
@@ -1127,6 +1127,7 @@ class ActivityStarter {
if (outActivity != null && outActivity.length > 0) { if (outActivity != null && outActivity.length > 0) {
outActivity[0] = reusedActivity; outActivity[0] = reusedActivity;
} }
return START_TASK_TO_FRONT; return START_TASK_TO_FRONT;
} }
} }
@@ -1218,7 +1219,7 @@ class ActivityStarter {
EventLogTags.AM_CREATE_ACTIVITY, mStartActivity, mStartActivity.getTask()); EventLogTags.AM_CREATE_ACTIVITY, mStartActivity, mStartActivity.getTask());
mTargetStack.mLastPausedActivity = null; mTargetStack.mLastPausedActivity = null;
sendPowerHintForLaunchStartIfNeeded(false /* forceSend */); sendPowerHintForLaunchStartIfNeeded(false /* forceSend */, mStartActivity);
mTargetStack.startActivityLocked(mStartActivity, topFocused, newTask, mKeepCurTransition, mTargetStack.startActivityLocked(mStartActivity, topFocused, newTask, mKeepCurTransition,
mOptions); mOptions);
@@ -1520,7 +1521,8 @@ class ActivityStarter {
if (mLaunchSingleInstance) { if (mLaunchSingleInstance) {
// There can be one and only one instance of single instance activity in the // There can be one and only one instance of single instance activity in the
// history, and it is always in its own unique task, so we do a special search. // history, and it is always in its own unique task, so we do a special search.
intentActivity = mSupervisor.findActivityLocked(mIntent, mStartActivity.info, false); intentActivity = mSupervisor.findActivityLocked(mIntent, mStartActivity.info,
mStartActivity.isHomeActivity());
} else if ((mLaunchFlags & FLAG_ACTIVITY_LAUNCH_ADJACENT) != 0) { } else if ((mLaunchFlags & FLAG_ACTIVITY_LAUNCH_ADJACENT) != 0) {
// For the launch adjacent case we only want to put the activity in an existing // For the launch adjacent case we only want to put the activity in an existing
// task if the activity already exists in the history. // task if the activity already exists in the history.