Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 65c7a158 authored by Wei Wang's avatar Wei Wang
Browse files

Add launch power hint for activity launch end

This change will provide more accurate duration for launch power hint

Bug: 28220567
Change-Id: Ie620b6ce93c72f21b5a6ef2604892bb751b045f3
parent 60585d12
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -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<ActivityStack> 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,
+13 −7
Original line number Diff line number Diff line
@@ -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) {