Pause activities when the screen is off.

Bug: 19948628
Change-Id: I90923605d50f4ee381da4e05117879554e0a1dee
This commit is contained in:
Jeff Brown
2015-06-10 16:36:03 -07:00
parent 8e5d33ef98
commit 48d1b14b7b

View File

@@ -514,6 +514,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
boolean mDreamingLockscreen;
boolean mDreamingSleepTokenNeeded;
SleepToken mDreamingSleepToken;
SleepToken mScreenOffSleepToken;
boolean mKeyguardSecure;
boolean mKeyguardSecureIncludingHidden;
volatile boolean mKeyguardOccluded;
@@ -5385,6 +5386,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
public void screenTurnedOff() {
if (DEBUG_WAKEUP) Slog.i(TAG, "Screen turned off...");
updateScreenOffSleepToken(true);
synchronized (mLock) {
mScreenOnEarly = false;
mScreenOnFully = false;
@@ -5399,6 +5401,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
public void screenTurningOn(final ScreenOnListener screenOnListener) {
if (DEBUG_WAKEUP) Slog.i(TAG, "Screen turning on...");
updateScreenOffSleepToken(false);
synchronized (mLock) {
mScreenOnEarly = true;
mScreenOnFully = false;
@@ -6021,6 +6024,20 @@ public class PhoneWindowManager implements WindowManagerPolicy {
} else {
if (mDreamingSleepToken != null) {
mDreamingSleepToken.release();
mDreamingSleepToken = null;
}
}
}
private void updateScreenOffSleepToken(boolean acquire) {
if (acquire) {
if (mScreenOffSleepToken == null) {
mScreenOffSleepToken = mActivityManagerInternal.acquireSleepToken("ScreenOff");
}
} else {
if (mScreenOffSleepToken != null) {
mScreenOffSleepToken.release();
mScreenOffSleepToken = null;
}
}
}