Moved activity to stopped state if relaunched while device is asleep

- If an activity is done relaunching and the device is sleeping or
shutting down, go ahead and force the activity to sleep which will
transition it into the stopped state. We do this after the activity
is relaunched as activities can currently only relaunch into the
resumed or paused state both of which are visible state.
However, the activity should be in the stopped state while the device
is sleeping.
- Also removed previous fix for b/28518380 that prevents activities from
relaunching due to configuration changes while the device is sleeping.
We need to allow relaunches due to configuration changes while the device
is sleeping so the things are responsive when you wake-up the device.
And, it is no longer a big deal since we are transitioning the activity
to the stop state when the relaunch is complete.

Bug: 30253333
Bug: 28518380
Change-Id: I5313c13a13c2d2f9bb43831797918d9e67a30cda
This commit is contained in:
Wale Ogunwale
2016-09-06 10:37:56 -07:00
parent 57e29b4b9e
commit 3e99736b61
3 changed files with 12 additions and 11 deletions

View File

@@ -1309,8 +1309,12 @@ final class ActivityRecord {
state == ActivityState.RESUMED;
}
public void setSleeping(boolean _sleeping) {
if (sleeping == _sleeping) {
void setSleeping(boolean _sleeping) {
setSleeping(_sleeping, false);
}
void setSleeping(boolean _sleeping, boolean force) {
if (!force && sleeping == _sleeping) {
return;
}
if (app != null && app.thread != null) {

View File

@@ -4512,15 +4512,6 @@ final class ActivityStack {
return true;
}
// TODO: We could probably make the condition below just check that the activity state is
// stopped, but also checking the sleep state for now to reduce change impact late in
// development cycle.
if (mService.isSleepingOrShuttingDownLocked() && r.state == ActivityState.STOPPED) {
if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION,
"Skipping config check (stopped while sleeping): " + r);
return true;
}
if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION,
"Ensuring correct configuration: " + r);

View File

@@ -3708,6 +3708,12 @@ public final class ActivityStackSupervisor implements DisplayListener {
void activityRelaunchedLocked(IBinder token) {
mWindowManager.notifyAppRelaunchingFinished(token);
if (mService.isSleepingOrShuttingDownLocked()) {
final ActivityRecord r = ActivityRecord.isInStackLocked(token);
if (r != null) {
r.setSleeping(true, true);
}
}
}
void activityRelaunchingLocked(ActivityRecord r) {