Loading services/java/com/android/server/am/ActivityStack.java +6 −7 Original line number Diff line number Diff line Loading @@ -1266,7 +1266,7 @@ final class ActivityStack { // There are no more activities! Let's just start up the // Launcher... ActivityOptions.abort(options); return mService.startHomeActivityLocked(mCurrentUser); return mStackSupervisor.resumeHomeActivity(prev); } next.delayedResume = false; Loading @@ -1284,8 +1284,7 @@ final class ActivityStack { if (prev != null && prev.mLaunchHomeTaskNext && prev.finishing && prev.task.getTopActivity() == null) { prev.mLaunchHomeTaskNext = false; return mService.startHomeActivityLocked(mCurrentUser); return mStackSupervisor.resumeHomeActivity(prev); } // If we are sleeping, and there is no resumed activity, and the top Loading Loading @@ -1323,9 +1322,8 @@ final class ActivityStack { // If we are currently pausing an activity, then don't do anything // until that is done. if (mPausingActivity != null) { if (DEBUG_SWITCH || DEBUG_PAUSE) Slog.v(TAG, "Skip resume: pausing=" + mPausingActivity); if (!mStackSupervisor.allPausedActivitiesComplete()) { if (DEBUG_SWITCH || DEBUG_PAUSE) Slog.v(TAG, "Skip resume: some activity pausing"); return false; } Loading Loading @@ -1362,6 +1360,7 @@ final class ActivityStack { // can be resumed... final ActivityStack lastStack = mStackSupervisor.getLastStack(); if ((isHomeStack() ^ lastStack.isHomeStack()) && lastStack.mResumedActivity != null) { // TODO: Don't pause when launching to the sibling task. if (DEBUG_SWITCH) Slog.v(TAG, "Skip resume: need to start pausing"); // At this point we want to put the upcoming activity's process // at the top of the LRU list, since we know we will be needing it Loading Loading @@ -3274,7 +3273,7 @@ final class ActivityStack { if (mResumedActivity != null && mResumedActivity.task == tr && mResumedActivity.mLaunchHomeTaskNext) { mResumedActivity.mLaunchHomeTaskNext = false; return mService.startHomeActivityLocked(mCurrentUser); return mStackSupervisor.resumeHomeActivity(null); } mStackSupervisor.getTopStack().resumeTopActivityLocked(null); Loading services/java/com/android/server/am/ActivityStackSupervisor.java +16 −16 Original line number Diff line number Diff line Loading @@ -185,6 +185,17 @@ public class ActivityStackSupervisor { } } boolean resumeHomeActivity(ActivityRecord prev) { moveHomeStack(true); if (prev != null) { prev.mLaunchHomeTaskNext = false; } if (mHomeStack.topRunningActivityLocked(null) != null) { return mHomeStack.resumeTopActivityLocked(prev); } return mService.startHomeActivityLocked(mCurrentUser); } final void setLaunchHomeTaskNextFlag(ActivityRecord sourceRecord, ActivityRecord r, ActivityStack stack) { if (stack == mHomeStack) { Loading Loading @@ -337,24 +348,13 @@ public class ActivityStackSupervisor { boolean allPausedActivitiesComplete() { for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) { final ActivityStack stack = mStacks.get(stackNdx); if (isFrontStack(stack)) { final ActivityRecord r = stack.mLastPausedActivity; final ActivityRecord r = stack.mPausingActivity; if (r != null && r.state != ActivityState.PAUSED && r.state != ActivityState.STOPPED && r.state != ActivityState.STOPPING) { return false; } } } // TODO: Not sure if this should check if all Resumed are complete too. switch (mStackState) { case STACK_STATE_HOME_TO_BACK: mStackState = STACK_STATE_HOME_IN_BACK; break; case STACK_STATE_HOME_TO_FRONT: mStackState = STACK_STATE_HOME_IN_FRONT; break; } return true; } Loading Loading
services/java/com/android/server/am/ActivityStack.java +6 −7 Original line number Diff line number Diff line Loading @@ -1266,7 +1266,7 @@ final class ActivityStack { // There are no more activities! Let's just start up the // Launcher... ActivityOptions.abort(options); return mService.startHomeActivityLocked(mCurrentUser); return mStackSupervisor.resumeHomeActivity(prev); } next.delayedResume = false; Loading @@ -1284,8 +1284,7 @@ final class ActivityStack { if (prev != null && prev.mLaunchHomeTaskNext && prev.finishing && prev.task.getTopActivity() == null) { prev.mLaunchHomeTaskNext = false; return mService.startHomeActivityLocked(mCurrentUser); return mStackSupervisor.resumeHomeActivity(prev); } // If we are sleeping, and there is no resumed activity, and the top Loading Loading @@ -1323,9 +1322,8 @@ final class ActivityStack { // If we are currently pausing an activity, then don't do anything // until that is done. if (mPausingActivity != null) { if (DEBUG_SWITCH || DEBUG_PAUSE) Slog.v(TAG, "Skip resume: pausing=" + mPausingActivity); if (!mStackSupervisor.allPausedActivitiesComplete()) { if (DEBUG_SWITCH || DEBUG_PAUSE) Slog.v(TAG, "Skip resume: some activity pausing"); return false; } Loading Loading @@ -1362,6 +1360,7 @@ final class ActivityStack { // can be resumed... final ActivityStack lastStack = mStackSupervisor.getLastStack(); if ((isHomeStack() ^ lastStack.isHomeStack()) && lastStack.mResumedActivity != null) { // TODO: Don't pause when launching to the sibling task. if (DEBUG_SWITCH) Slog.v(TAG, "Skip resume: need to start pausing"); // At this point we want to put the upcoming activity's process // at the top of the LRU list, since we know we will be needing it Loading Loading @@ -3274,7 +3273,7 @@ final class ActivityStack { if (mResumedActivity != null && mResumedActivity.task == tr && mResumedActivity.mLaunchHomeTaskNext) { mResumedActivity.mLaunchHomeTaskNext = false; return mService.startHomeActivityLocked(mCurrentUser); return mStackSupervisor.resumeHomeActivity(null); } mStackSupervisor.getTopStack().resumeTopActivityLocked(null); Loading
services/java/com/android/server/am/ActivityStackSupervisor.java +16 −16 Original line number Diff line number Diff line Loading @@ -185,6 +185,17 @@ public class ActivityStackSupervisor { } } boolean resumeHomeActivity(ActivityRecord prev) { moveHomeStack(true); if (prev != null) { prev.mLaunchHomeTaskNext = false; } if (mHomeStack.topRunningActivityLocked(null) != null) { return mHomeStack.resumeTopActivityLocked(prev); } return mService.startHomeActivityLocked(mCurrentUser); } final void setLaunchHomeTaskNextFlag(ActivityRecord sourceRecord, ActivityRecord r, ActivityStack stack) { if (stack == mHomeStack) { Loading Loading @@ -337,24 +348,13 @@ public class ActivityStackSupervisor { boolean allPausedActivitiesComplete() { for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) { final ActivityStack stack = mStacks.get(stackNdx); if (isFrontStack(stack)) { final ActivityRecord r = stack.mLastPausedActivity; final ActivityRecord r = stack.mPausingActivity; if (r != null && r.state != ActivityState.PAUSED && r.state != ActivityState.STOPPED && r.state != ActivityState.STOPPING) { return false; } } } // TODO: Not sure if this should check if all Resumed are complete too. switch (mStackState) { case STACK_STATE_HOME_TO_BACK: mStackState = STACK_STATE_HOME_IN_BACK; break; case STACK_STATE_HOME_TO_FRONT: mStackState = STACK_STATE_HOME_IN_FRONT; break; } return true; } Loading