Loading core/java/android/app/ActivityManagerNative.java +21 −1 Original line number Diff line number Diff line Loading @@ -647,6 +647,14 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM return true; } case SET_FOCUSED_STACK_TRANSACTION: { data.enforceInterface(IActivityManager.descriptor); int stackId = data.readInt(); setFocusedStack(stackId); reply.writeNoException(); return true; } case GET_TASK_FOR_ACTIVITY_TRANSACTION: { data.enforceInterface(IActivityManager.descriptor); IBinder token = data.readStrongBinder(); Loading Loading @@ -2634,7 +2642,7 @@ class ActivityManagerProxy implements IActivityManager data.writeInterfaceToken(IActivityManager.descriptor); data.writeInt(stackId); data.writeFloat(weight); mRemote.transact(RESIZE_STACK_TRANSACTION, data, reply, 0); mRemote.transact(RESIZE_STACK_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); reply.readException(); data.recycle(); reply.recycle(); Loading @@ -2653,6 +2661,18 @@ class ActivityManagerProxy implements IActivityManager reply.recycle(); return list; } @Override public void setFocusedStack(int stackId) throws RemoteException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); data.writeInterfaceToken(IActivityManager.descriptor); data.writeInt(stackId); mRemote.transact(SET_FOCUSED_STACK_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); reply.readException(); data.recycle(); reply.recycle(); } public int getTaskForActivity(IBinder token, boolean onlyRoot) throws RemoteException { Parcel data = Parcel.obtain(); Loading core/java/android/app/IActivityManager.java +16 −6 Original line number Diff line number Diff line Loading @@ -120,6 +120,7 @@ public interface IActivityManager extends IInterface { public void moveTaskToStack(int taskId, int stackId, boolean toTop) throws RemoteException; public void resizeStack(int stackId, float weight) throws RemoteException; public List<StackInfo> getStacks() throws RemoteException; public void setFocusedStack(int stackId) throws RemoteException; public int getTaskForActivity(IBinder token, boolean onlyRoot) throws RemoteException; /* oneway */ public void reportThumbnail(IBinder token, Loading Loading @@ -401,10 +402,12 @@ public interface IActivityManager extends IInterface { info = _info; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { info.writeToParcel(dest, 0); if (provider != null) { Loading @@ -418,10 +421,12 @@ public interface IActivityManager extends IInterface { public static final Parcelable.Creator<ContentProviderHolder> CREATOR = new Parcelable.Creator<ContentProviderHolder>() { @Override public ContentProviderHolder createFromParcel(Parcel source) { return new ContentProviderHolder(source); } @Override public ContentProviderHolder[] newArray(int size) { return new ContentProviderHolder[size]; } Loading @@ -447,10 +452,12 @@ public interface IActivityManager extends IInterface { public WaitResult() { } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(result); dest.writeInt(timeout ? 1 : 0); Loading @@ -461,10 +468,12 @@ public interface IActivityManager extends IInterface { public static final Parcelable.Creator<WaitResult> CREATOR = new Parcelable.Creator<WaitResult>() { @Override public WaitResult createFromParcel(Parcel source) { return new WaitResult(source); } @Override public WaitResult[] newArray(int size) { return new WaitResult[size]; } Loading Loading @@ -650,4 +659,5 @@ public interface IActivityManager extends IInterface { int RESIZE_STACK_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+167; int SET_USER_IS_MONKEY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+168; int GET_STACKS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+169; int SET_FOCUSED_STACK_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+170; } services/java/com/android/server/am/ActivityManagerService.java +24 −3 Original line number Diff line number Diff line Loading @@ -958,6 +958,7 @@ public final class ActivityManagerService extends ActivityManagerNative static final int USER_SWITCH_TIMEOUT_MSG = 36; static final int IMMERSIVE_MODE_LOCK_MSG = 37; static final int PERSIST_URI_GRANTS = 38; static final int SET_FOCUSED_STACK = 39; static final int FIRST_ACTIVITY_STACK_MSG = 100; static final int FIRST_BROADCAST_QUEUE_MSG = 200; Loading Loading @@ -1446,6 +1447,18 @@ public final class ActivityManagerService extends ActivityManagerNative writeGrantedUriPermissions(); break; } case SET_FOCUSED_STACK: { synchronized (ActivityManagerService.this) { ActivityStack stack = mStackSupervisor.getStack(msg.arg1); if (stack != null) { ActivityRecord r = stack.topRunningActivityLocked(null); if (r != null) { setFocusedActivityLocked(r); } } } break; } } } }; Loading Loading @@ -1935,6 +1948,11 @@ public final class ActivityManagerService extends ActivityManagerNative } } @Override public void setFocusedStack(int stackId) { mHandler.obtainMessage(SET_FOCUSED_STACK, stackId, 0).sendToTarget(); } final void applyUpdateLockStateLocked(ActivityRecord r) { // Modifications to the UpdateLock state are done on our handler, outside // the activity manager's locks. The new state is determined based on the Loading Loading @@ -4915,6 +4933,7 @@ public final class ActivityManagerService extends ActivityManagerNative return false; } @Override public Intent getIntentForIntentSender(IIntentSender pendingResult) { if (!(pendingResult instanceof PendingIntentRecord)) { return null; Loading @@ -4927,6 +4946,7 @@ public final class ActivityManagerService extends ActivityManagerNative return null; } @Override public void setProcessLimit(int max) { enforceCallingPermission(android.Manifest.permission.SET_PROCESS_LIMIT, "setProcessLimit()"); Loading @@ -4937,6 +4957,7 @@ public final class ActivityManagerService extends ActivityManagerNative trimApplications(); } @Override public int getProcessLimit() { synchronized (this) { return mProcessLimitOverride; Loading services/java/com/android/server/am/ActivityStack.java +15 −6 Original line number Diff line number Diff line Loading @@ -761,7 +761,7 @@ final class ActivityStack { return null; } private final void startPausingLocked(boolean userLeaving, boolean uiSleeping) { final void startPausingLocked(boolean userLeaving, boolean uiSleeping) { if (mPausingActivity != null) { Slog.e(TAG, "Trying to pause when pause is already pending for " + mPausingActivity, new RuntimeException("here").fillInStackTrace()); Loading Loading @@ -1206,6 +1206,7 @@ final class ActivityStack { // There are no more activities! Let's just start up the // Launcher... ActivityOptions.abort(options); if (DEBUG_STACK) mStackSupervisor.validateTopActivitiesLocked(); return mStackSupervisor.resumeHomeActivity(prev); } Loading @@ -1219,11 +1220,13 @@ final class ActivityStack { mWindowManager.executeAppTransition(); mNoAnimActivities.clear(); ActivityOptions.abort(options); if (DEBUG_STACK) mStackSupervisor.validateTopActivitiesLocked(); return false; } if (prev != null && prev.mLaunchHomeTaskNext && prev.finishing && prev.task.getTopActivity() == null) { if (DEBUG_STACK) mStackSupervisor.validateTopActivitiesLocked(); return mStackSupervisor.resumeHomeActivity(prev); } Loading @@ -1237,6 +1240,7 @@ final class ActivityStack { mWindowManager.executeAppTransition(); mNoAnimActivities.clear(); ActivityOptions.abort(options); if (DEBUG_STACK) mStackSupervisor.validateTopActivitiesLocked(); return false; } Loading @@ -1246,6 +1250,7 @@ final class ActivityStack { if (mService.mStartedUsers.get(next.userId) == null) { Slog.w(TAG, "Skipping resume of top activity " + next + ": user " + next.userId + " is stopped"); if (DEBUG_STACK) mStackSupervisor.validateTopActivitiesLocked(); return false; } Loading @@ -1264,6 +1269,7 @@ final class ActivityStack { // until that is done. if (!mStackSupervisor.allPausedActivitiesComplete()) { if (DEBUG_SWITCH || DEBUG_PAUSE) Slog.v(TAG, "Skip resume: some activity pausing"); if (DEBUG_STACK) mStackSupervisor.validateTopActivitiesLocked(); return false; } Loading Loading @@ -1298,10 +1304,7 @@ final class ActivityStack { // We need to start pausing the current activity so the top one // can be resumed... final ActivityStack lastStack = mStackSupervisor.getLastStack(); if (lastStack != null && (isHomeStack() ^ lastStack.isHomeStack()) && lastStack.mResumedActivity != null) { // TODO: Don't pause when launching to the sibling task. if (mStackSupervisor.pauseBackStacks(userLeaving)) { 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 @@ -1312,7 +1315,7 @@ final class ActivityStack { // happen whenever it needs to later. mService.updateLruProcessLocked(next.app, false); } lastStack.startPausingLocked(userLeaving, false); if (DEBUG_STACK) mStackSupervisor.validateTopActivitiesLocked(); return true; } Loading Loading @@ -1420,6 +1423,7 @@ final class ActivityStack { next.clearOptionsLocked(); } ActivityStack lastStack = mStackSupervisor.getLastStack(); if (next.app != null && next.app.thread != null) { if (DEBUG_SWITCH) Slog.v(TAG, "Resume running: " + next); Loading Loading @@ -1472,8 +1476,10 @@ final class ActivityStack { } if (mStackSupervisor.reportResumedActivityLocked(next)) { mNoAnimActivities.clear(); if (DEBUG_STACK) mStackSupervisor.validateTopActivitiesLocked(); return true; } if (DEBUG_STACK) mStackSupervisor.validateTopActivitiesLocked(); return false; } Loading Loading @@ -1526,6 +1532,7 @@ final class ActivityStack { null, true); } mStackSupervisor.startSpecificActivityLocked(next, true, false); if (DEBUG_STACK) mStackSupervisor.validateTopActivitiesLocked(); return true; } Loading @@ -1540,6 +1547,7 @@ final class ActivityStack { Slog.w(TAG, "Exception thrown during resume of " + next, e); requestFinishActivityLocked(next.appToken, Activity.RESULT_CANCELED, null, "resume-exception", true); if (DEBUG_STACK) mStackSupervisor.validateTopActivitiesLocked(); return true; } next.stopped = false; Loading @@ -1563,6 +1571,7 @@ final class ActivityStack { mStackSupervisor.startSpecificActivityLocked(next, true, true); } if (DEBUG_STACK) mStackSupervisor.validateTopActivitiesLocked(); return true; } Loading services/java/com/android/server/am/ActivityStackSupervisor.java +44 −4 Original line number Diff line number Diff line Loading @@ -216,10 +216,6 @@ public class ActivityStackSupervisor { return !(stack.isHomeStack() ^ getFocusedStack().isHomeStack()); } boolean homeIsInFront() { return isFrontStack(mHomeStack); } void moveHomeStack(boolean toFront) { final boolean homeInFront = isFrontStack(mHomeStack); if (homeInFront ^ toFront) { Loading Loading @@ -390,6 +386,18 @@ public class ActivityStackSupervisor { return true; } boolean pauseBackStacks(boolean userLeaving) { boolean someActivityPaused = false; for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) { final ActivityStack stack = mStacks.get(stackNdx); if (!isFrontStack(stack) && stack.mResumedActivity != null) { stack.startPausingLocked(userLeaving, false); someActivityPaused = true; } } return someActivityPaused; } boolean allPausedActivitiesComplete() { for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) { final ActivityStack stack = mStacks.get(stackNdx); Loading Loading @@ -1983,6 +1991,38 @@ public class ActivityStackSupervisor { return stops; } void validateTopActivitiesLocked() { for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) { final ActivityStack stack = mStacks.get(stackNdx); final ActivityRecord r = stack.topRunningActivityLocked(null); if (isFrontStack(stack)) { if (r == null) { Slog.e(TAG, "validateTop...: null top activity, stack=" + stack); } else { if (stack.mPausingActivity != null) { Slog.e(TAG, "validateTop...: top stack has pausing activity r=" + r + " state=" + r.state); } if (r.state != ActivityState.INITIALIZING && r.state != ActivityState.RESUMED) { Slog.e(TAG, "validateTop...: activity in front not resumed r=" + r + " state=" + r.state); } } } else { if (stack.mResumedActivity != null) { Slog.e(TAG, "validateTop...: back stack has resumed activity r=" + r + " state=" + r.state); } if (r != null && (r.state == ActivityState.INITIALIZING || r.state == ActivityState.RESUMED)) { Slog.e(TAG, "validateTop...: activity in back resumed r=" + r + " state=" + r.state); } } } } public void dump(PrintWriter pw, String prefix) { pw.print(prefix); pw.print("mDismissKeyguardOnNextActivity:"); pw.println(mDismissKeyguardOnNextActivity); Loading Loading
core/java/android/app/ActivityManagerNative.java +21 −1 Original line number Diff line number Diff line Loading @@ -647,6 +647,14 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM return true; } case SET_FOCUSED_STACK_TRANSACTION: { data.enforceInterface(IActivityManager.descriptor); int stackId = data.readInt(); setFocusedStack(stackId); reply.writeNoException(); return true; } case GET_TASK_FOR_ACTIVITY_TRANSACTION: { data.enforceInterface(IActivityManager.descriptor); IBinder token = data.readStrongBinder(); Loading Loading @@ -2634,7 +2642,7 @@ class ActivityManagerProxy implements IActivityManager data.writeInterfaceToken(IActivityManager.descriptor); data.writeInt(stackId); data.writeFloat(weight); mRemote.transact(RESIZE_STACK_TRANSACTION, data, reply, 0); mRemote.transact(RESIZE_STACK_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); reply.readException(); data.recycle(); reply.recycle(); Loading @@ -2653,6 +2661,18 @@ class ActivityManagerProxy implements IActivityManager reply.recycle(); return list; } @Override public void setFocusedStack(int stackId) throws RemoteException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); data.writeInterfaceToken(IActivityManager.descriptor); data.writeInt(stackId); mRemote.transact(SET_FOCUSED_STACK_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); reply.readException(); data.recycle(); reply.recycle(); } public int getTaskForActivity(IBinder token, boolean onlyRoot) throws RemoteException { Parcel data = Parcel.obtain(); Loading
core/java/android/app/IActivityManager.java +16 −6 Original line number Diff line number Diff line Loading @@ -120,6 +120,7 @@ public interface IActivityManager extends IInterface { public void moveTaskToStack(int taskId, int stackId, boolean toTop) throws RemoteException; public void resizeStack(int stackId, float weight) throws RemoteException; public List<StackInfo> getStacks() throws RemoteException; public void setFocusedStack(int stackId) throws RemoteException; public int getTaskForActivity(IBinder token, boolean onlyRoot) throws RemoteException; /* oneway */ public void reportThumbnail(IBinder token, Loading Loading @@ -401,10 +402,12 @@ public interface IActivityManager extends IInterface { info = _info; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { info.writeToParcel(dest, 0); if (provider != null) { Loading @@ -418,10 +421,12 @@ public interface IActivityManager extends IInterface { public static final Parcelable.Creator<ContentProviderHolder> CREATOR = new Parcelable.Creator<ContentProviderHolder>() { @Override public ContentProviderHolder createFromParcel(Parcel source) { return new ContentProviderHolder(source); } @Override public ContentProviderHolder[] newArray(int size) { return new ContentProviderHolder[size]; } Loading @@ -447,10 +452,12 @@ public interface IActivityManager extends IInterface { public WaitResult() { } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(result); dest.writeInt(timeout ? 1 : 0); Loading @@ -461,10 +468,12 @@ public interface IActivityManager extends IInterface { public static final Parcelable.Creator<WaitResult> CREATOR = new Parcelable.Creator<WaitResult>() { @Override public WaitResult createFromParcel(Parcel source) { return new WaitResult(source); } @Override public WaitResult[] newArray(int size) { return new WaitResult[size]; } Loading Loading @@ -650,4 +659,5 @@ public interface IActivityManager extends IInterface { int RESIZE_STACK_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+167; int SET_USER_IS_MONKEY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+168; int GET_STACKS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+169; int SET_FOCUSED_STACK_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+170; }
services/java/com/android/server/am/ActivityManagerService.java +24 −3 Original line number Diff line number Diff line Loading @@ -958,6 +958,7 @@ public final class ActivityManagerService extends ActivityManagerNative static final int USER_SWITCH_TIMEOUT_MSG = 36; static final int IMMERSIVE_MODE_LOCK_MSG = 37; static final int PERSIST_URI_GRANTS = 38; static final int SET_FOCUSED_STACK = 39; static final int FIRST_ACTIVITY_STACK_MSG = 100; static final int FIRST_BROADCAST_QUEUE_MSG = 200; Loading Loading @@ -1446,6 +1447,18 @@ public final class ActivityManagerService extends ActivityManagerNative writeGrantedUriPermissions(); break; } case SET_FOCUSED_STACK: { synchronized (ActivityManagerService.this) { ActivityStack stack = mStackSupervisor.getStack(msg.arg1); if (stack != null) { ActivityRecord r = stack.topRunningActivityLocked(null); if (r != null) { setFocusedActivityLocked(r); } } } break; } } } }; Loading Loading @@ -1935,6 +1948,11 @@ public final class ActivityManagerService extends ActivityManagerNative } } @Override public void setFocusedStack(int stackId) { mHandler.obtainMessage(SET_FOCUSED_STACK, stackId, 0).sendToTarget(); } final void applyUpdateLockStateLocked(ActivityRecord r) { // Modifications to the UpdateLock state are done on our handler, outside // the activity manager's locks. The new state is determined based on the Loading Loading @@ -4915,6 +4933,7 @@ public final class ActivityManagerService extends ActivityManagerNative return false; } @Override public Intent getIntentForIntentSender(IIntentSender pendingResult) { if (!(pendingResult instanceof PendingIntentRecord)) { return null; Loading @@ -4927,6 +4946,7 @@ public final class ActivityManagerService extends ActivityManagerNative return null; } @Override public void setProcessLimit(int max) { enforceCallingPermission(android.Manifest.permission.SET_PROCESS_LIMIT, "setProcessLimit()"); Loading @@ -4937,6 +4957,7 @@ public final class ActivityManagerService extends ActivityManagerNative trimApplications(); } @Override public int getProcessLimit() { synchronized (this) { return mProcessLimitOverride; Loading
services/java/com/android/server/am/ActivityStack.java +15 −6 Original line number Diff line number Diff line Loading @@ -761,7 +761,7 @@ final class ActivityStack { return null; } private final void startPausingLocked(boolean userLeaving, boolean uiSleeping) { final void startPausingLocked(boolean userLeaving, boolean uiSleeping) { if (mPausingActivity != null) { Slog.e(TAG, "Trying to pause when pause is already pending for " + mPausingActivity, new RuntimeException("here").fillInStackTrace()); Loading Loading @@ -1206,6 +1206,7 @@ final class ActivityStack { // There are no more activities! Let's just start up the // Launcher... ActivityOptions.abort(options); if (DEBUG_STACK) mStackSupervisor.validateTopActivitiesLocked(); return mStackSupervisor.resumeHomeActivity(prev); } Loading @@ -1219,11 +1220,13 @@ final class ActivityStack { mWindowManager.executeAppTransition(); mNoAnimActivities.clear(); ActivityOptions.abort(options); if (DEBUG_STACK) mStackSupervisor.validateTopActivitiesLocked(); return false; } if (prev != null && prev.mLaunchHomeTaskNext && prev.finishing && prev.task.getTopActivity() == null) { if (DEBUG_STACK) mStackSupervisor.validateTopActivitiesLocked(); return mStackSupervisor.resumeHomeActivity(prev); } Loading @@ -1237,6 +1240,7 @@ final class ActivityStack { mWindowManager.executeAppTransition(); mNoAnimActivities.clear(); ActivityOptions.abort(options); if (DEBUG_STACK) mStackSupervisor.validateTopActivitiesLocked(); return false; } Loading @@ -1246,6 +1250,7 @@ final class ActivityStack { if (mService.mStartedUsers.get(next.userId) == null) { Slog.w(TAG, "Skipping resume of top activity " + next + ": user " + next.userId + " is stopped"); if (DEBUG_STACK) mStackSupervisor.validateTopActivitiesLocked(); return false; } Loading @@ -1264,6 +1269,7 @@ final class ActivityStack { // until that is done. if (!mStackSupervisor.allPausedActivitiesComplete()) { if (DEBUG_SWITCH || DEBUG_PAUSE) Slog.v(TAG, "Skip resume: some activity pausing"); if (DEBUG_STACK) mStackSupervisor.validateTopActivitiesLocked(); return false; } Loading Loading @@ -1298,10 +1304,7 @@ final class ActivityStack { // We need to start pausing the current activity so the top one // can be resumed... final ActivityStack lastStack = mStackSupervisor.getLastStack(); if (lastStack != null && (isHomeStack() ^ lastStack.isHomeStack()) && lastStack.mResumedActivity != null) { // TODO: Don't pause when launching to the sibling task. if (mStackSupervisor.pauseBackStacks(userLeaving)) { 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 @@ -1312,7 +1315,7 @@ final class ActivityStack { // happen whenever it needs to later. mService.updateLruProcessLocked(next.app, false); } lastStack.startPausingLocked(userLeaving, false); if (DEBUG_STACK) mStackSupervisor.validateTopActivitiesLocked(); return true; } Loading Loading @@ -1420,6 +1423,7 @@ final class ActivityStack { next.clearOptionsLocked(); } ActivityStack lastStack = mStackSupervisor.getLastStack(); if (next.app != null && next.app.thread != null) { if (DEBUG_SWITCH) Slog.v(TAG, "Resume running: " + next); Loading Loading @@ -1472,8 +1476,10 @@ final class ActivityStack { } if (mStackSupervisor.reportResumedActivityLocked(next)) { mNoAnimActivities.clear(); if (DEBUG_STACK) mStackSupervisor.validateTopActivitiesLocked(); return true; } if (DEBUG_STACK) mStackSupervisor.validateTopActivitiesLocked(); return false; } Loading Loading @@ -1526,6 +1532,7 @@ final class ActivityStack { null, true); } mStackSupervisor.startSpecificActivityLocked(next, true, false); if (DEBUG_STACK) mStackSupervisor.validateTopActivitiesLocked(); return true; } Loading @@ -1540,6 +1547,7 @@ final class ActivityStack { Slog.w(TAG, "Exception thrown during resume of " + next, e); requestFinishActivityLocked(next.appToken, Activity.RESULT_CANCELED, null, "resume-exception", true); if (DEBUG_STACK) mStackSupervisor.validateTopActivitiesLocked(); return true; } next.stopped = false; Loading @@ -1563,6 +1571,7 @@ final class ActivityStack { mStackSupervisor.startSpecificActivityLocked(next, true, true); } if (DEBUG_STACK) mStackSupervisor.validateTopActivitiesLocked(); return true; } Loading
services/java/com/android/server/am/ActivityStackSupervisor.java +44 −4 Original line number Diff line number Diff line Loading @@ -216,10 +216,6 @@ public class ActivityStackSupervisor { return !(stack.isHomeStack() ^ getFocusedStack().isHomeStack()); } boolean homeIsInFront() { return isFrontStack(mHomeStack); } void moveHomeStack(boolean toFront) { final boolean homeInFront = isFrontStack(mHomeStack); if (homeInFront ^ toFront) { Loading Loading @@ -390,6 +386,18 @@ public class ActivityStackSupervisor { return true; } boolean pauseBackStacks(boolean userLeaving) { boolean someActivityPaused = false; for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) { final ActivityStack stack = mStacks.get(stackNdx); if (!isFrontStack(stack) && stack.mResumedActivity != null) { stack.startPausingLocked(userLeaving, false); someActivityPaused = true; } } return someActivityPaused; } boolean allPausedActivitiesComplete() { for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) { final ActivityStack stack = mStacks.get(stackNdx); Loading Loading @@ -1983,6 +1991,38 @@ public class ActivityStackSupervisor { return stops; } void validateTopActivitiesLocked() { for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) { final ActivityStack stack = mStacks.get(stackNdx); final ActivityRecord r = stack.topRunningActivityLocked(null); if (isFrontStack(stack)) { if (r == null) { Slog.e(TAG, "validateTop...: null top activity, stack=" + stack); } else { if (stack.mPausingActivity != null) { Slog.e(TAG, "validateTop...: top stack has pausing activity r=" + r + " state=" + r.state); } if (r.state != ActivityState.INITIALIZING && r.state != ActivityState.RESUMED) { Slog.e(TAG, "validateTop...: activity in front not resumed r=" + r + " state=" + r.state); } } } else { if (stack.mResumedActivity != null) { Slog.e(TAG, "validateTop...: back stack has resumed activity r=" + r + " state=" + r.state); } if (r != null && (r.state == ActivityState.INITIALIZING || r.state == ActivityState.RESUMED)) { Slog.e(TAG, "validateTop...: activity in back resumed r=" + r + " state=" + r.state); } } } } public void dump(PrintWriter pw, String prefix) { pw.print(prefix); pw.print("mDismissKeyguardOnNextActivity:"); pw.println(mDismissKeyguardOnNextActivity); Loading