Loading core/java/android/app/ActivityThread.java +13 −2 Original line number Diff line number Diff line Loading @@ -1383,13 +1383,14 @@ public final class ActivityThread { public final void scheduleRelaunchActivity(IBinder token, List<ResultInfo> pendingResults, List<Intent> pendingNewIntents, int configChanges, boolean notResumed) { int configChanges, boolean notResumed, Configuration config) { ActivityRecord r = new ActivityRecord(); r.token = token; r.pendingResults = pendingResults; r.pendingIntents = pendingNewIntents; r.startsNotResumed = notResumed; r.createdConfig = config; synchronized (mRelaunchingActivities) { mRelaunchingActivities.add(r); Loading Loading @@ -2511,7 +2512,7 @@ public final class ActivityThread { Activity a = performLaunchActivity(r, customIntent); if (a != null) { r.createdConfig = new Configuration(a.getResources().getConfiguration()); r.createdConfig = new Configuration(mConfiguration); handleResumeActivity(r.token, false, r.isForward); if (!r.activity.mFinished && r.startsNotResumed) { Loading Loading @@ -3563,6 +3564,16 @@ public final class ActivityThread { } } if (tmp.createdConfig != null) { // If the activity manager is passing us its current config, // assume that is really what we want regardless of what we // may have pending. if (mConfiguration == null || mConfiguration.diff(tmp.createdConfig) != 0) { changedConfig = tmp.createdConfig; } } if (DEBUG_CONFIGURATION) Log.v(TAG, "Relaunching activity " + tmp.token + ": changedConfig=" + changedConfig); Loading core/java/android/app/ApplicationThreadNative.java +13 −2 Original line number Diff line number Diff line Loading @@ -140,7 +140,11 @@ public abstract class ApplicationThreadNative extends Binder List<Intent> pi = data.createTypedArrayList(Intent.CREATOR); int configChanges = data.readInt(); boolean notResumed = data.readInt() != 0; scheduleRelaunchActivity(b, ri, pi, configChanges, notResumed); Configuration config = null; if (data.readInt() != 0) { config = Configuration.CREATOR.createFromParcel(data); } scheduleRelaunchActivity(b, ri, pi, configChanges, notResumed, config); return true; } Loading Loading @@ -491,7 +495,8 @@ class ApplicationThreadProxy implements IApplicationThread { public final void scheduleRelaunchActivity(IBinder token, List<ResultInfo> pendingResults, List<Intent> pendingNewIntents, int configChanges, boolean notResumed) throws RemoteException { int configChanges, boolean notResumed, Configuration config) throws RemoteException { Parcel data = Parcel.obtain(); data.writeInterfaceToken(IApplicationThread.descriptor); data.writeStrongBinder(token); Loading @@ -499,6 +504,12 @@ class ApplicationThreadProxy implements IApplicationThread { data.writeTypedList(pendingNewIntents); data.writeInt(configChanges); data.writeInt(notResumed ? 1 : 0); if (config != null) { data.writeInt(1); config.writeToParcel(data, 0); } else { data.writeInt(0); } mRemote.transact(SCHEDULE_RELAUNCH_ACTIVITY_TRANSACTION, data, null, IBinder.FLAG_ONEWAY); data.recycle(); Loading core/java/android/app/IApplicationThread.java +1 −1 Original line number Diff line number Diff line Loading @@ -56,7 +56,7 @@ public interface IApplicationThread extends IInterface { throws RemoteException; void scheduleRelaunchActivity(IBinder token, List<ResultInfo> pendingResults, List<Intent> pendingNewIntents, int configChanges, boolean notResumed) throws RemoteException; boolean notResumed, Configuration config) throws RemoteException; void scheduleNewIntent(List<Intent> intent, IBinder token) throws RemoteException; void scheduleDestroyActivity(IBinder token, boolean finished, int configChanges) throws RemoteException; Loading services/java/com/android/server/am/ActivityManagerService.java +1 −1 Original line number Diff line number Diff line Loading @@ -12891,7 +12891,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen try { if (DEBUG_SWITCH) Log.i(TAG, "Switch is restarting resumed " + r); r.app.thread.scheduleRelaunchActivity(r, results, newIntents, changes, !andResume); changes, !andResume, mConfiguration); // Note: don't need to call pauseIfSleepingLocked() here, because // the caller will only pass in 'andResume' if this activity is // currently resumed, which implies we aren't sleeping. Loading
core/java/android/app/ActivityThread.java +13 −2 Original line number Diff line number Diff line Loading @@ -1383,13 +1383,14 @@ public final class ActivityThread { public final void scheduleRelaunchActivity(IBinder token, List<ResultInfo> pendingResults, List<Intent> pendingNewIntents, int configChanges, boolean notResumed) { int configChanges, boolean notResumed, Configuration config) { ActivityRecord r = new ActivityRecord(); r.token = token; r.pendingResults = pendingResults; r.pendingIntents = pendingNewIntents; r.startsNotResumed = notResumed; r.createdConfig = config; synchronized (mRelaunchingActivities) { mRelaunchingActivities.add(r); Loading Loading @@ -2511,7 +2512,7 @@ public final class ActivityThread { Activity a = performLaunchActivity(r, customIntent); if (a != null) { r.createdConfig = new Configuration(a.getResources().getConfiguration()); r.createdConfig = new Configuration(mConfiguration); handleResumeActivity(r.token, false, r.isForward); if (!r.activity.mFinished && r.startsNotResumed) { Loading Loading @@ -3563,6 +3564,16 @@ public final class ActivityThread { } } if (tmp.createdConfig != null) { // If the activity manager is passing us its current config, // assume that is really what we want regardless of what we // may have pending. if (mConfiguration == null || mConfiguration.diff(tmp.createdConfig) != 0) { changedConfig = tmp.createdConfig; } } if (DEBUG_CONFIGURATION) Log.v(TAG, "Relaunching activity " + tmp.token + ": changedConfig=" + changedConfig); Loading
core/java/android/app/ApplicationThreadNative.java +13 −2 Original line number Diff line number Diff line Loading @@ -140,7 +140,11 @@ public abstract class ApplicationThreadNative extends Binder List<Intent> pi = data.createTypedArrayList(Intent.CREATOR); int configChanges = data.readInt(); boolean notResumed = data.readInt() != 0; scheduleRelaunchActivity(b, ri, pi, configChanges, notResumed); Configuration config = null; if (data.readInt() != 0) { config = Configuration.CREATOR.createFromParcel(data); } scheduleRelaunchActivity(b, ri, pi, configChanges, notResumed, config); return true; } Loading Loading @@ -491,7 +495,8 @@ class ApplicationThreadProxy implements IApplicationThread { public final void scheduleRelaunchActivity(IBinder token, List<ResultInfo> pendingResults, List<Intent> pendingNewIntents, int configChanges, boolean notResumed) throws RemoteException { int configChanges, boolean notResumed, Configuration config) throws RemoteException { Parcel data = Parcel.obtain(); data.writeInterfaceToken(IApplicationThread.descriptor); data.writeStrongBinder(token); Loading @@ -499,6 +504,12 @@ class ApplicationThreadProxy implements IApplicationThread { data.writeTypedList(pendingNewIntents); data.writeInt(configChanges); data.writeInt(notResumed ? 1 : 0); if (config != null) { data.writeInt(1); config.writeToParcel(data, 0); } else { data.writeInt(0); } mRemote.transact(SCHEDULE_RELAUNCH_ACTIVITY_TRANSACTION, data, null, IBinder.FLAG_ONEWAY); data.recycle(); Loading
core/java/android/app/IApplicationThread.java +1 −1 Original line number Diff line number Diff line Loading @@ -56,7 +56,7 @@ public interface IApplicationThread extends IInterface { throws RemoteException; void scheduleRelaunchActivity(IBinder token, List<ResultInfo> pendingResults, List<Intent> pendingNewIntents, int configChanges, boolean notResumed) throws RemoteException; boolean notResumed, Configuration config) throws RemoteException; void scheduleNewIntent(List<Intent> intent, IBinder token) throws RemoteException; void scheduleDestroyActivity(IBinder token, boolean finished, int configChanges) throws RemoteException; Loading
services/java/com/android/server/am/ActivityManagerService.java +1 −1 Original line number Diff line number Diff line Loading @@ -12891,7 +12891,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen try { if (DEBUG_SWITCH) Log.i(TAG, "Switch is restarting resumed " + r); r.app.thread.scheduleRelaunchActivity(r, results, newIntents, changes, !andResume); changes, !andResume, mConfiguration); // Note: don't need to call pauseIfSleepingLocked() here, because // the caller will only pass in 'andResume' if this activity is // currently resumed, which implies we aren't sleeping.