From 65c7a15833b61bf2a3d193992326a68716f0aca4 Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Thu, 2 Jun 2016 18:51:22 -0700 Subject: [PATCH] Add launch power hint for activity launch end This change will provide more accurate duration for launch power hint Bug: 28220567 Change-Id: Ie620b6ce93c72f21b5a6ef2604892bb751b045f3 --- .../server/am/ActivityStackSupervisor.java | 7 ++++++- .../android/server/am/ActivityStarter.java | 20 ++++++++++++------- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index 8d6b7eed3f7ba..04a198431ff00 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -870,6 +870,8 @@ public final class ActivityStackSupervisor implements DisplayListener { } } } + // Send launch end powerhint when idle + mService.mActivityStarter.sendPowerHintForLaunchEndIfNeeded(); return true; } @@ -2755,6 +2757,9 @@ public final class ActivityStackSupervisor implements DisplayListener { } } + // Send launch end powerhint before going sleep + mService.mActivityStarter.sendPowerHintForLaunchEndIfNeeded(); + for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) { final ArrayList stacks = mActivityDisplays.valueAt(displayNdx).mStacks; for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) { @@ -4416,7 +4421,7 @@ public final class ActivityStackSupervisor implements DisplayListener { // Work Challenge is present) let startActivityInPackage handle the intercepting. if (!mService.mUserController.shouldConfirmCredentials(task.userId) && task.getRootActivity() != null) { - mService.mActivityStarter.sendPowerHintForLaunchIfNeeded(true /* forceSend */); + mService.mActivityStarter.sendPowerHintForLaunchStartIfNeeded(true /* forceSend */); mActivityMetricsLogger.notifyActivityLaunching(); mService.moveTaskToFrontLocked(task.taskId, 0, bOptions); mActivityMetricsLogger.notifyActivityLaunched(ActivityManager.START_TASK_TO_FRONT, diff --git a/services/core/java/com/android/server/am/ActivityStarter.java b/services/core/java/com/android/server/am/ActivityStarter.java index b8480ea73bce2..47b6b55888170 100644 --- a/services/core/java/com/android/server/am/ActivityStarter.java +++ b/services/core/java/com/android/server/am/ActivityStarter.java @@ -212,8 +212,6 @@ class ActivityStarter { mKeepCurTransition = false; mAvoidMoveToFront = false; - mPowerHintSent = false; - mVoiceSession = null; mVoiceInteractor = null; } @@ -946,8 +944,8 @@ class ActivityStarter { return START_SUCCESS; } - void sendPowerHintForLaunchIfNeeded(boolean forceSend) { - // Trigger launch power hint if activity is not in the current task + void sendPowerHintForLaunchStartIfNeeded(boolean forceSend) { + // Trigger launch power hint if activity being launched is not in the current task final ActivityStack focusStack = mSupervisor.getFocusedStack(); final ActivityRecord curTop = (focusStack == null) ? null : focusStack.topRunningNonDelayedActivityLocked(mNotTop); @@ -955,11 +953,19 @@ class ActivityStarter { curTop.task != null && mStartActivity != null && curTop.task != mStartActivity.task )) && mService.mLocalPowerManager != null) { - mService.mLocalPowerManager.powerHint(PowerManagerInternal.POWER_HINT_LAUNCH, 0); + mService.mLocalPowerManager.powerHint(PowerManagerInternal.POWER_HINT_LAUNCH, 1); mPowerHintSent = true; } } + void sendPowerHintForLaunchEndIfNeeded() { + // Trigger launch power hint if activity is launched + if (mPowerHintSent && mService.mLocalPowerManager != null) { + mService.mLocalPowerManager.powerHint(PowerManagerInternal.POWER_HINT_LAUNCH, 0); + mPowerHintSent = false; + } + } + private int startActivityUnchecked(final ActivityRecord r, ActivityRecord sourceRecord, IVoiceInteractionSession voiceSession, IVoiceInteractor voiceInteractor, int startFlags, boolean doResume, ActivityOptions options, TaskRecord inTask) { @@ -1021,7 +1027,7 @@ class ActivityStarter { } } - sendPowerHintForLaunchIfNeeded(false /* forceSend */); + sendPowerHintForLaunchStartIfNeeded(false /* forceSend */); mReusedActivity = setTargetStackAndMoveToFrontIfNeeded(mReusedActivity); @@ -1146,7 +1152,7 @@ class ActivityStarter { EventLogTags.AM_CREATE_ACTIVITY, mStartActivity, mStartActivity.task); mTargetStack.mLastPausedActivity = null; - sendPowerHintForLaunchIfNeeded(false /* forceSend */); + sendPowerHintForLaunchStartIfNeeded(false /* forceSend */); mTargetStack.startActivityLocked(mStartActivity, newTask, mKeepCurTransition, mOptions); if (mDoResume) {