diff options
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityStarter.java | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/services/core/java/com/android/server/am/ActivityStarter.java b/services/core/java/com/android/server/am/ActivityStarter.java index 09af9412da64..007a478ec683 100644 --- a/services/core/java/com/android/server/am/ActivityStarter.java +++ b/services/core/java/com/android/server/am/ActivityStarter.java @@ -949,14 +949,18 @@ class ActivityStarter { } 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); - if ((forceSend || (!mPowerHintSent && curTop != null && - curTop.task != null && mStartActivity != null && - curTop.task != mStartActivity.task )) && - mService.mLocalPowerManager != null) { + boolean sendHint = forceSend; + + if (!sendHint) { + // If not forced, send power hint when the activity's process is different than the + // current resumed activity. + final ActivityRecord resumedActivity = mSupervisor.getResumedActivityLocked(); + sendHint = resumedActivity == null + || resumedActivity.app == null + || !resumedActivity.app.equals(mStartActivity.app); + } + + if (sendHint && mService.mLocalPowerManager != null) { mService.mLocalPowerManager.powerHint(PowerHint.LAUNCH, 1); mPowerHintSent = true; } |