diff options
12 files changed, 132 insertions, 75 deletions
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java index b4b3c99..4a30b05 100644 --- a/core/java/android/app/Activity.java +++ b/core/java/android/app/Activity.java @@ -30,7 +30,6 @@ import com.android.internal.policy.PolicyManager; import android.annotation.IntDef; import android.annotation.Nullable; -import android.app.admin.DevicePolicyManager; import android.content.ComponentCallbacks2; import android.content.ComponentName; import android.content.ContentResolver; @@ -1150,6 +1149,12 @@ public class Activity extends ContextThemeWrapper } getApplication().dispatchActivityStarted(this); + + final ActivityOptions activityOptions = getActivityOptions(); + if (activityOptions != null && + activityOptions.getAnimationType() == ActivityOptions.ANIM_SCENE_TRANSITION) { + mEnterTransitionCoordinator = activityOptions.createEnterActivityTransition(this); + } } /** @@ -5272,19 +5277,29 @@ public class Activity extends ContextThemeWrapper * * @param callback the method to call when all visible Activities behind this one have been * drawn and it is safe to make this Activity translucent again. + * @param options activity options delivered to the activity below this one. The options + * are retrieved using {@link #getActivityOptions}. * * @see #convertFromTranslucent() * @see TranslucentConversionListener * * @hide */ - public void convertToTranslucent(TranslucentConversionListener callback) { + void convertToTranslucent(TranslucentConversionListener callback, ActivityOptions options) { + boolean drawComplete; try { mTranslucentCallback = callback; mChangeCanvasToTranslucent = - ActivityManagerNative.getDefault().convertToTranslucent(mToken); + ActivityManagerNative.getDefault().convertToTranslucent(mToken, options); + drawComplete = true; } catch (RemoteException e) { - // pass + // Make callback return as though it timed out. + mChangeCanvasToTranslucent = false; + drawComplete = false; + } + if (!mChangeCanvasToTranslucent && mTranslucentCallback != null) { + // Window is already translucent. + mTranslucentCallback.onTranslucentConversionComplete(drawComplete); } } @@ -5300,6 +5315,22 @@ public class Activity extends ContextThemeWrapper } /** + * Retrieve the ActivityOptions passed in from the launching activity or passed back + * from an activity launched by this activity in its call to {@link + * #convertToTranslucent(TranslucentConversionListener, ActivityOptions)} + * + * @return The ActivityOptions passed to {@link #convertToTranslucent}. + * @hide + */ + ActivityOptions getActivityOptions() { + try { + return ActivityManagerNative.getDefault().getActivityOptions(mToken); + } catch (RemoteException e) { + } + return null; + } + + /** * Adjust the current immersive mode setting. * * Note that changing this value will have no effect on the activity's @@ -5533,30 +5564,12 @@ public class Activity extends ContextThemeWrapper mParent = parent; } - final void attach(Context context, ActivityThread aThread, Instrumentation instr, IBinder token, - Application application, Intent intent, ActivityInfo info, CharSequence title, - Activity parent, String id, NonConfigurationInstances lastNonConfigurationInstances, - Configuration config) { - attach(context, aThread, instr, token, 0, application, intent, info, title, parent, id, - lastNonConfigurationInstances, config); - } - - final void attach(Context context, ActivityThread aThread, - Instrumentation instr, IBinder token, int ident, - Application application, Intent intent, ActivityInfo info, - CharSequence title, Activity parent, String id, - NonConfigurationInstances lastNonConfigurationInstances, - Configuration config) { - attach(context, aThread, instr, token, ident, application, intent, info, title, parent, id, - lastNonConfigurationInstances, config, null, null); - } - final void attach(Context context, ActivityThread aThread, Instrumentation instr, IBinder token, int ident, Application application, Intent intent, ActivityInfo info, CharSequence title, Activity parent, String id, NonConfigurationInstances lastNonConfigurationInstances, - Configuration config, Bundle options, IVoiceInteractor voiceInteractor) { + Configuration config, IVoiceInteractor voiceInteractor) { attachBaseContext(context); mFragments.attachActivity(this, mContainer, null); @@ -5597,12 +5610,6 @@ public class Activity extends ContextThemeWrapper } mWindowManager = mWindow.getWindowManager(); mCurrentConfig = config; - if (options != null) { - ActivityOptions activityOptions = new ActivityOptions(options); - if (activityOptions.getAnimationType() == ActivityOptions.ANIM_SCENE_TRANSITION) { - mEnterTransitionCoordinator = activityOptions.createEnterActivityTransition(this); - } - } } /** @hide */ @@ -5873,7 +5880,7 @@ public class Activity extends ContextThemeWrapper * occurred waiting for the Activity to complete drawing. * * @see Activity#convertFromTranslucent() - * @see Activity#convertToTranslucent(TranslucentConversionListener) + * @see Activity#convertToTranslucent(TranslucentConversionListener, ActivityOptions) */ public void onTranslucentConversionComplete(boolean drawComplete); } diff --git a/core/java/android/app/ActivityManagerNative.java b/core/java/android/app/ActivityManagerNative.java index 296e9d3..2f924d3 100644 --- a/core/java/android/app/ActivityManagerNative.java +++ b/core/java/android/app/ActivityManagerNative.java @@ -1547,12 +1547,28 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM case CONVERT_TO_TRANSLUCENT_TRANSACTION: { data.enforceInterface(IActivityManager.descriptor); IBinder token = data.readStrongBinder(); - boolean converted = convertToTranslucent(token); + final Bundle bundle; + if (data.readInt() == 0) { + bundle = null; + } else { + bundle = data.readBundle(); + } + final ActivityOptions options = bundle == null ? null : new ActivityOptions(bundle); + boolean converted = convertToTranslucent(token, options); reply.writeNoException(); reply.writeInt(converted ? 1 : 0); return true; } + case GET_ACTIVITY_OPTIONS_TRANSACTION: { + data.enforceInterface(IActivityManager.descriptor); + IBinder token = data.readStrongBinder(); + final ActivityOptions options = getActivityOptions(token); + reply.writeNoException(); + reply.writeBundle(options == null ? null : options.toBundle()); + return true; + } + case SET_IMMERSIVE_TRANSACTION: { data.enforceInterface(IActivityManager.descriptor); IBinder token = data.readStrongBinder(); @@ -4074,12 +4090,18 @@ class ActivityManagerProxy implements IActivityManager return res; } - public boolean convertToTranslucent(IBinder token) + public boolean convertToTranslucent(IBinder token, ActivityOptions options) throws RemoteException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); data.writeInterfaceToken(IActivityManager.descriptor); data.writeStrongBinder(token); + if (options == null) { + data.writeInt(0); + } else { + data.writeInt(1); + data.writeBundle(options.toBundle()); + } mRemote.transact(CONVERT_TO_TRANSLUCENT_TRANSACTION, data, reply, 0); reply.readException(); boolean res = reply.readInt() != 0; @@ -4088,6 +4110,20 @@ class ActivityManagerProxy implements IActivityManager return res; } + public ActivityOptions getActivityOptions(IBinder token) throws RemoteException { + Parcel data = Parcel.obtain(); + Parcel reply = Parcel.obtain(); + data.writeInterfaceToken(IActivityManager.descriptor); + data.writeStrongBinder(token); + mRemote.transact(GET_ACTIVITY_OPTIONS_TRANSACTION, data, reply, 0); + reply.readException(); + Bundle bundle = reply.readBundle(); + ActivityOptions options = bundle == null ? null : new ActivityOptions(bundle); + data.recycle(); + reply.recycle(); + return options; + } + public void setImmersive(IBinder token, boolean immersive) throws RemoteException { Parcel data = Parcel.obtain(); diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index 4cf30ae..71e4e82 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -77,7 +77,6 @@ import android.util.DisplayMetrics; import android.util.EventLog; import android.util.Log; import android.util.LogPrinter; -import android.util.Pair; import android.util.PrintWriterPrinter; import android.util.Slog; import android.util.SuperNotCalledException; @@ -295,7 +294,6 @@ public final class ActivityThread { boolean isForward; int pendingConfigChanges; boolean onlyLocalRequest; - Bundle activityOptions; View mPendingRemoveWindow; WindowManager mPendingRemoveWindowManager; @@ -594,8 +592,7 @@ public final class ActivityThread { public final void scheduleResumeActivity(IBinder token, int processState, boolean isForward, Bundle resumeArgs) { updateProcessState(processState, false); - sendMessage(H.RESUME_ACTIVITY, new Pair<IBinder, Bundle>(token, resumeArgs), - isForward ? 1 : 0); + sendMessage(H.RESUME_ACTIVITY, token, isForward ? 1 : 0); } public final void scheduleSendResult(IBinder token, List<ResultInfo> results) { @@ -612,8 +609,7 @@ public final class ActivityThread { IVoiceInteractor voiceInteractor, int procState, Bundle state, PersistableBundle persistentState, List<ResultInfo> pendingResults, List<Intent> pendingNewIntents, boolean notResumed, boolean isForward, - String profileName, ParcelFileDescriptor profileFd, boolean autoStopProfiler, - Bundle resumeArgs) { + String profileName, ParcelFileDescriptor profileFd, boolean autoStopProfiler) { updateProcessState(procState, false); @@ -637,7 +633,6 @@ public final class ActivityThread { r.profileFile = profileName; r.profileFd = profileFd; r.autoStopProfiler = autoStopProfiler; - r.activityOptions = resumeArgs; updatePendingConfiguration(curConfig); @@ -1302,9 +1297,7 @@ public final class ActivityThread { break; case RESUME_ACTIVITY: Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "activityResume"); - final Pair<IBinder, Bundle> resumeArgs = (Pair<IBinder, Bundle>) msg.obj; - handleResumeActivity(resumeArgs.first, resumeArgs.second, true, - msg.arg1 != 0, true); + handleResumeActivity((IBinder) msg.obj, true, msg.arg1 != 0, true); Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); break; case SEND_RESULT: @@ -2084,7 +2077,7 @@ public final class ActivityThread { + ", comp=" + name + ", token=" + token); } - return performLaunchActivity(r, null, null); + return performLaunchActivity(r, null); } public final Activity getActivity(IBinder token) { @@ -2137,8 +2130,7 @@ public final class ActivityThread { sendMessage(H.CLEAN_UP_CONTEXT, cci); } - private Activity performLaunchActivity(ActivityClientRecord r, Intent customIntent, - Bundle options) { + private Activity performLaunchActivity(ActivityClientRecord r, Intent customIntent) { // System.out.println("##### [" + System.currentTimeMillis() + "] ActivityThread.performLaunchActivity(" + r + ")"); ActivityInfo aInfo = r.activityInfo; @@ -2196,7 +2188,7 @@ public final class ActivityThread { + r.activityInfo.name + " with config " + config); activity.attach(appContext, this, getInstrumentation(), r.token, r.ident, app, r.intent, r.activityInfo, title, r.parent, - r.embeddedID, r.lastNonConfigurationInstances, config, options, + r.embeddedID, r.lastNonConfigurationInstances, config, r.voiceInteractor); if (customIntent != null) { @@ -2322,12 +2314,12 @@ public final class ActivityThread { if (localLOGV) Slog.v( TAG, "Handling launch of " + r); - Activity a = performLaunchActivity(r, customIntent, r.activityOptions); + Activity a = performLaunchActivity(r, customIntent); if (a != null) { r.createdConfig = new Configuration(mConfiguration); Bundle oldState = r.state; - handleResumeActivity(r.token, r.activityOptions, false, r.isForward, + handleResumeActivity(r.token, false, r.isForward, !r.activity.mFinished && !r.startsNotResumed); if (!r.activity.mFinished && r.startsNotResumed) { @@ -2887,7 +2879,7 @@ public final class ActivityThread { r.mPendingRemoveWindowManager = null; } - final void handleResumeActivity(IBinder token, Bundle resumeArgs, + final void handleResumeActivity(IBinder token, boolean clearHide, boolean isForward, boolean reallyResume) { // If we are getting ready to gc after going to the background, well // we are back active so skip it. @@ -3810,7 +3802,6 @@ public final class ActivityThread { } } r.startsNotResumed = tmp.startsNotResumed; - r.activityOptions = null; handleLaunchActivity(r, currentIntent); } diff --git a/core/java/android/app/ApplicationThreadNative.java b/core/java/android/app/ApplicationThreadNative.java index 0029efa..ef4099f 100644 --- a/core/java/android/app/ApplicationThreadNative.java +++ b/core/java/android/app/ApplicationThreadNative.java @@ -152,11 +152,10 @@ public abstract class ApplicationThreadNative extends Binder ParcelFileDescriptor profileFd = data.readInt() != 0 ? ParcelFileDescriptor.CREATOR.createFromParcel(data) : null; boolean autoStopProfiler = data.readInt() != 0; - Bundle resumeArgs = data.readBundle(); scheduleLaunchActivity(intent, b, ident, info, curConfig, compatInfo, voiceInteractor, procState, state, persistentState, ri, pi, notResumed, isForward, profileName, profileFd, - autoStopProfiler, resumeArgs); + autoStopProfiler); return true; } @@ -737,8 +736,7 @@ class ApplicationThreadProxy implements IApplicationThread { IVoiceInteractor voiceInteractor, int procState, Bundle state, PersistableBundle persistentState, List<ResultInfo> pendingResults, List<Intent> pendingNewIntents, boolean notResumed, boolean isForward, - String profileName, ParcelFileDescriptor profileFd, boolean autoStopProfiler, - Bundle resumeArgs) + String profileName, ParcelFileDescriptor profileFd, boolean autoStopProfiler) throws RemoteException { Parcel data = Parcel.obtain(); data.writeInterfaceToken(IApplicationThread.descriptor); @@ -764,7 +762,6 @@ class ApplicationThreadProxy implements IApplicationThread { data.writeInt(0); } data.writeInt(autoStopProfiler ? 1 : 0); - data.writeBundle(resumeArgs); mRemote.transact(SCHEDULE_LAUNCH_ACTIVITY_TRANSACTION, data, null, IBinder.FLAG_ONEWAY); data.recycle(); diff --git a/core/java/android/app/EnterTransitionCoordinator.java b/core/java/android/app/EnterTransitionCoordinator.java index cbb8359..d2d8ed1 100644 --- a/core/java/android/app/EnterTransitionCoordinator.java +++ b/core/java/android/app/EnterTransitionCoordinator.java @@ -121,7 +121,7 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator mActivity.convertFromTranslucent(); } } - }); + }, null); Drawable background = getDecor().getBackground(); if (background != null) { window.setBackgroundDrawable(null); @@ -230,7 +230,7 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator public void onTranslucentConversionComplete(boolean drawComplete) { fadeOutBackground(); } - }); + }, null); } else { fadeOutBackground(); } diff --git a/core/java/android/app/IActivityManager.java b/core/java/android/app/IActivityManager.java index a30a64a..d259b30 100644 --- a/core/java/android/app/IActivityManager.java +++ b/core/java/android/app/IActivityManager.java @@ -311,8 +311,9 @@ public interface IActivityManager extends IInterface { public void finishHeavyWeightApp() throws RemoteException; public boolean convertFromTranslucent(IBinder token) throws RemoteException; - public boolean convertToTranslucent(IBinder token) throws RemoteException; + public boolean convertToTranslucent(IBinder token, ActivityOptions options) throws RemoteException; public void notifyActivityDrawn(IBinder token) throws RemoteException; + public ActivityOptions getActivityOptions(IBinder token) throws RemoteException; public void setImmersive(IBinder token, boolean immersive) throws RemoteException; public boolean isImmersive(IBinder token) throws RemoteException; @@ -739,4 +740,5 @@ public interface IActivityManager extends IInterface { int IS_IN_LOCK_TASK_MODE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+216; int SET_RECENTS_ACTIVITY_VALUES_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+217; int START_VOICE_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+218; + int GET_ACTIVITY_OPTIONS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+219; } diff --git a/core/java/android/app/IApplicationThread.java b/core/java/android/app/IApplicationThread.java index d5fbd0b..d0df7c3 100644 --- a/core/java/android/app/IApplicationThread.java +++ b/core/java/android/app/IApplicationThread.java @@ -62,8 +62,7 @@ public interface IApplicationThread extends IInterface { IVoiceInteractor voiceInteractor, int procState, Bundle state, PersistableBundle persistentState, List<ResultInfo> pendingResults, List<Intent> pendingNewIntents, boolean notResumed, boolean isForward, - String profileName, ParcelFileDescriptor profileFd, boolean autoStopProfiler, - Bundle resumeArgs) + String profileName, ParcelFileDescriptor profileFd, boolean autoStopProfiler) throws RemoteException; void scheduleRelaunchActivity(IBinder token, List<ResultInfo> pendingResults, List<Intent> pendingNewIntents, int configChanges, diff --git a/core/java/android/app/Instrumentation.java b/core/java/android/app/Instrumentation.java index bb3e002..b78b9c9 100644 --- a/core/java/android/app/Instrumentation.java +++ b/core/java/android/app/Instrumentation.java @@ -1036,10 +1036,10 @@ public class Instrumentation { IllegalAccessException { Activity activity = (Activity)clazz.newInstance(); ActivityThread aThread = null; - activity.attach(context, aThread, this, token, application, intent, + activity.attach(context, aThread, this, token, 0, application, intent, info, title, parent, id, (Activity.NonConfigurationInstances)lastNonConfigurationInstance, - new Configuration()); + new Configuration(), null); return activity; } diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index d6457c3..e7e2f4d 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -9087,7 +9087,7 @@ public final class ActivityManagerService extends ActivityManagerNative } @Override - public boolean convertToTranslucent(IBinder token) { + public boolean convertToTranslucent(IBinder token, ActivityOptions options) { final long origId = Binder.clearCallingIdentity(); try { synchronized (this) { @@ -9096,7 +9096,7 @@ public final class ActivityManagerService extends ActivityManagerNative return false; } if (r.changeWindowTranslucency(false)) { - r.task.stack.convertToTranslucent(r); + r.task.stack.convertToTranslucent(r, options); mWindowManager.setAppFullscreen(token, false); mStackSupervisor.ensureActivitiesVisibleLocked(null, 0); return true; @@ -9109,6 +9109,24 @@ public final class ActivityManagerService extends ActivityManagerNative } @Override + public ActivityOptions getActivityOptions(IBinder token) { + final long origId = Binder.clearCallingIdentity(); + try { + synchronized (this) { + final ActivityRecord r = ActivityRecord.isInStackLocked(token); + if (r != null) { + final ActivityOptions activityOptions = r.pendingOptions; + r.pendingOptions = null; + return activityOptions; + } + return null; + } + } finally { + Binder.restoreCallingIdentity(origId); + } + } + + @Override public void setImmersive(IBinder token, boolean immersive) { synchronized(this) { final ActivityRecord r = ActivityRecord.isInStackLocked(token); diff --git a/services/core/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java index 8391f79..9582ac7 100755 --- a/services/core/java/com/android/server/am/ActivityRecord.java +++ b/services/core/java/com/android/server/am/ActivityRecord.java @@ -347,7 +347,7 @@ final class ActivityRecord { ActivityInfo aInfo, Configuration _configuration, ActivityRecord _resultTo, String _resultWho, int _reqCode, boolean _componentSpecified, ActivityStackSupervisor supervisor, - ActivityContainer container) { + ActivityContainer container, Bundle options) { service = _service; appToken = new Token(this); info = aInfo; @@ -378,6 +378,9 @@ final class ActivityRecord { hasBeenLaunched = false; mStackSupervisor = supervisor; mInitialActivityContainer = container; + if (options != null) { + pendingOptions = new ActivityOptions(options); + } // This starts out true, since the initial state of an activity // is that we have everything, and we shouldn't never consider it @@ -711,6 +714,9 @@ final class ActivityRecord { + pendingOptions.getThumbnail().getHeight())); } break; + default: + Slog.e(TAG, "applyOptionsLocked: Unknown animationType=" + animationType); + break; } pendingOptions = null; } diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index 2e439ae..c1e5e5b 100755 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java @@ -205,6 +205,9 @@ final class ActivityStack { ActivityRecord mTranslucentActivityWaiting = null; ArrayList<ActivityRecord> mUndrawnActivitiesBelowTopTranslucent = new ArrayList<ActivityRecord>(); + // Options passed from the caller of the convertToTranslucent to the activity that will + // appear below it. + ActivityOptions mReturningActivityOptions = null; /** * Set when we know we are going to be calling updateConfiguration() @@ -1218,6 +1221,7 @@ final class ActivityStack { TAG, "Making visible and scheduling visibility: " + r); try { if (mTranslucentActivityWaiting != null) { + r.updateOptionsLocked(mReturningActivityOptions); mUndrawnActivitiesBelowTopTranslucent.add(r); } setVisibile(r, true); @@ -1295,9 +1299,10 @@ final class ActivityStack { } } - void convertToTranslucent(ActivityRecord r) { + void convertToTranslucent(ActivityRecord r, ActivityOptions options) { mTranslucentActivityWaiting = r; mUndrawnActivitiesBelowTopTranslucent.clear(); + mReturningActivityOptions = options; mHandler.sendEmptyMessageDelayed(TRANSLUCENT_TIMEOUT_MSG, TRANSLUCENT_CONVERSION_TIMEOUT); } @@ -1471,8 +1476,6 @@ final class ActivityStack { next.sleeping = false; mStackSupervisor.mWaitingVisibleActivities.remove(next); - next.updateOptionsLocked(options); - if (DEBUG_SWITCH) Slog.v(TAG, "Resuming " + next); // If we are currently pausing an activity, then don't do anything @@ -1916,7 +1919,6 @@ final class ActivityStack { : AppTransition.TRANSIT_ACTIVITY_OPEN, keepCurTransition); mNoAnimActivities.remove(r); } - r.updateOptionsLocked(options); mWindowManager.addAppToken(task.mActivities.indexOf(r), r.appToken, r.task.taskId, mStackId, r.info.screenOrientation, r.fullscreen, (r.info.flags & ActivityInfo.FLAG_SHOW_ON_LOCK_SCREEN) != 0, r.userId, @@ -1967,13 +1969,14 @@ final class ActivityStack { (r.info.flags & ActivityInfo.FLAG_SHOW_ON_LOCK_SCREEN) != 0, r.userId, r.info.configChanges); ActivityOptions.abort(options); + options = null; } if (VALIDATE_TOKENS) { validateAppTokensLocked(); } if (doResume) { - mStackSupervisor.resumeTopActivitiesLocked(); + mStackSupervisor.resumeTopActivitiesLocked(this, r, options); } } diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index 6f62a03..5d744e6 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -1022,14 +1022,12 @@ public final class ActivityStackSupervisor implements DisplayListener { } app.forceProcessStateUpTo(ActivityManager.PROCESS_STATE_TOP); - Bundle options = (r.pendingOptions == null) ? null : r.pendingOptions.toBundle(); - r.clearOptionsLocked(); app.thread.scheduleLaunchActivity(new Intent(r.intent), r.appToken, System.identityHashCode(r), r.info, new Configuration(mService.mConfiguration), r.compat, r.task.voiceInteractor, app.repProcState, r.icicle, r.persistentState, results, newIntents, !andResume, - mService.isNextTransitionForward(), profileFile, profileFd, profileAutoStop, - options); + mService.isNextTransitionForward(), profileFile, profileFd, profileAutoStop + ); if ((app.info.flags&ApplicationInfo.FLAG_CANT_SAVE_STATE) != 0) { // This may be a heavy-weight process! Note that the package @@ -1325,7 +1323,7 @@ public final class ActivityStackSupervisor implements DisplayListener { ActivityRecord r = new ActivityRecord(mService, callerApp, callingUid, callingPackage, intent, resolvedType, aInfo, mService.mConfiguration, resultRecord, resultWho, - requestCode, componentSpecified, this, container); + requestCode, componentSpecified, this, container, options); if (outActivity != null) { outActivity[0] = r; } |