diff options
| author | Craig Mautner <cmautner@google.com> | 2014-07-15 18:37:08 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-07-15 16:05:04 +0000 |
| commit | 00e7ba05ac2c6b17005ef9cd61d49c595c899aa9 (patch) | |
| tree | 56fd28ce2895dcc75600125b25a8de7e415145c9 /core/java/android | |
| parent | 4d922e6f7452d30f2f6085a292cf261d62a1de02 (diff) | |
| parent | bb742462781a73bb25516067c8fe6311c1c8a93e (diff) | |
Merge "Launch activity behind launching task." into lmp-dev
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/app/ActivityManagerNative.java | 26 | ||||
| -rw-r--r-- | core/java/android/app/ActivityOptions.java | 29 | ||||
| -rw-r--r-- | core/java/android/app/IActivityManager.java | 5 | ||||
| -rw-r--r-- | core/java/android/content/Intent.java | 11 | ||||
| -rw-r--r-- | core/java/android/view/IWindowManager.aidl | 2 |
5 files changed, 53 insertions, 20 deletions
diff --git a/core/java/android/app/ActivityManagerNative.java b/core/java/android/app/ActivityManagerNative.java index 4a70e15e9256..e2b5a841c532 100644 --- a/core/java/android/app/ActivityManagerNative.java +++ b/core/java/android/app/ActivityManagerNative.java @@ -30,7 +30,6 @@ import android.content.pm.IPackageDataObserver; import android.content.pm.ParceledListSlice; import android.content.pm.UserInfo; import android.content.res.Configuration; -import android.graphics.Bitmap; import android.graphics.Rect; import android.net.Uri; import android.os.Binder; @@ -2196,13 +2195,21 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM return true; } - case MEDIA_RESOURCES_RELEASED: { + case MEDIA_RESOURCES_RELEASED_TRANSACTION: { data.enforceInterface(IActivityManager.descriptor); IBinder token = data.readStrongBinder(); mediaResourcesReleased(token); reply.writeNoException(); return true; } + + case NOTIFY_LAUNCH_TASK_BEHIND_COMPLETE_TRANSACTION: { + data.enforceInterface(IActivityManager.descriptor); + IBinder token = data.readStrongBinder(); + notifyLaunchTaskBehindComplete(token); + reply.writeNoException(); + return true; + } } return super.onTransact(code, data, reply, flags); @@ -5069,7 +5076,20 @@ class ActivityManagerProxy implements IActivityManager Parcel reply = Parcel.obtain(); data.writeInterfaceToken(IActivityManager.descriptor); data.writeStrongBinder(token); - mRemote.transact(MEDIA_RESOURCES_RELEASED, data, reply, IBinder.FLAG_ONEWAY); + mRemote.transact(MEDIA_RESOURCES_RELEASED_TRANSACTION, data, reply, IBinder.FLAG_ONEWAY); + reply.readException(); + data.recycle(); + reply.recycle(); + } + + @Override + public void notifyLaunchTaskBehindComplete(IBinder token) throws RemoteException { + Parcel data = Parcel.obtain(); + Parcel reply = Parcel.obtain(); + data.writeInterfaceToken(IActivityManager.descriptor); + data.writeStrongBinder(token); + mRemote.transact(NOTIFY_LAUNCH_TASK_BEHIND_COMPLETE_TRANSACTION, data, reply, + IBinder.FLAG_ONEWAY); reply.readException(); data.recycle(); reply.recycle(); diff --git a/core/java/android/app/ActivityOptions.java b/core/java/android/app/ActivityOptions.java index fafa948b1317..4c02314bec1f 100644 --- a/core/java/android/app/ActivityOptions.java +++ b/core/java/android/app/ActivityOptions.java @@ -126,6 +126,8 @@ public class ActivityOptions { public static final int ANIM_SCENE_TRANSITION = 5; /** @hide */ public static final int ANIM_DEFAULT = 6; + /** @hide */ + public static final int ANIM_LAUNCH_TASK_BEHIND = 7; private String mPackageName; private int mAnimationType = ANIM_NONE; @@ -432,6 +434,27 @@ public class ActivityOptions { return opts; } + /** + * If set along with Intent.FLAG_ACTIVITY_NEW_DOCUMENT then the task being launched will not be + * presented to the user but will instead be only available through the recents task list. + * In addition, the new task wil be affiliated with the launching activity's task. + * Affiliated tasks are grouped together in the recents task list. + * + * <p>This behavior is not supported for activities with {@link + * android.R.styleable#AndroidManifestActivity_launchMode launchMode} values of + * <code>singleInstance</code> or <code>singleTask</code>. + */ + public static ActivityOptions makeLaunchTaskBehindAnimation() { + final ActivityOptions opts = new ActivityOptions(); + opts.mAnimationType = ANIM_LAUNCH_TASK_BEHIND; + return opts; + } + + /** @hide */ + public boolean getLaunchTaskBehind() { + return mAnimationType == ANIM_LAUNCH_TASK_BEHIND; + } + private ActivityOptions() { } @@ -647,16 +670,15 @@ public class ActivityOptions { if (mPackageName != null) { b.putString(KEY_PACKAGE_NAME, mPackageName); } + b.putInt(KEY_ANIM_TYPE, mAnimationType); switch (mAnimationType) { case ANIM_CUSTOM: - b.putInt(KEY_ANIM_TYPE, mAnimationType); b.putInt(KEY_ANIM_ENTER_RES_ID, mCustomEnterResId); b.putInt(KEY_ANIM_EXIT_RES_ID, mCustomExitResId); b.putBinder(KEY_ANIM_START_LISTENER, mAnimationStartedListener != null ? mAnimationStartedListener.asBinder() : null); break; case ANIM_SCALE_UP: - b.putInt(KEY_ANIM_TYPE, mAnimationType); b.putInt(KEY_ANIM_START_X, mStartX); b.putInt(KEY_ANIM_START_Y, mStartY); b.putInt(KEY_ANIM_START_WIDTH, mStartWidth); @@ -664,7 +686,6 @@ public class ActivityOptions { break; case ANIM_THUMBNAIL_SCALE_UP: case ANIM_THUMBNAIL_SCALE_DOWN: - b.putInt(KEY_ANIM_TYPE, mAnimationType); b.putParcelable(KEY_ANIM_THUMBNAIL, mThumbnail); b.putInt(KEY_ANIM_START_X, mStartX); b.putInt(KEY_ANIM_START_Y, mStartY); @@ -672,7 +693,6 @@ public class ActivityOptions { != null ? mAnimationStartedListener.asBinder() : null); break; case ANIM_SCENE_TRANSITION: - b.putInt(KEY_ANIM_TYPE, mAnimationType); if (mTransitionReceiver != null) { b.putParcelable(KEY_TRANSITION_COMPLETE_LISTENER, mTransitionReceiver); } @@ -683,6 +703,7 @@ public class ActivityOptions { b.putInt(KEY_EXIT_COORDINATOR_INDEX, mExitCoordinatorIndex); break; } + return b; } diff --git a/core/java/android/app/IActivityManager.java b/core/java/android/app/IActivityManager.java index b3a8a8a7cca1..c6921a209e2c 100644 --- a/core/java/android/app/IActivityManager.java +++ b/core/java/android/app/IActivityManager.java @@ -444,6 +444,8 @@ public interface IActivityManager extends IInterface { public boolean isBackgroundMediaPlaying(IBinder token) throws RemoteException; public void mediaResourcesReleased(IBinder token) throws RemoteException; + public void notifyLaunchTaskBehindComplete(IBinder token) throws RemoteException; + /* * Private non-Binder interfaces */ @@ -750,5 +752,6 @@ public interface IActivityManager extends IInterface { int IS_TOP_OF_TASK_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+224; int SET_MEDIA_PLAYING_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+225; int IS_BG_MEDIA_PLAYING_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+226; - int MEDIA_RESOURCES_RELEASED = IBinder.FIRST_CALL_TRANSACTION+227; + int MEDIA_RESOURCES_RELEASED_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+227; + int NOTIFY_LAUNCH_TASK_BEHIND_COMPLETE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+228; } diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java index 4153a02cedc2..5bf8a97c5cbe 100644 --- a/core/java/android/content/Intent.java +++ b/core/java/android/content/Intent.java @@ -3809,17 +3809,6 @@ public class Intent implements Parcelable, Cloneable { * {@link android.R.styleable#AndroidManifestActivity_autoRemoveFromRecents}. */ public static final int FLAG_ACTIVITY_AUTO_REMOVE_FROM_RECENTS = 0x00002000; - /** - * If set along with FLAG_ACTIVITY_NEW_DOCUMENT then the task being launched will not be - * presented to the user but will instead be only available through the recents task list. - * In addition, the new task wil be affiliated with the launching activity's task. - * Affiliated tasks are grouped together in the recents task list. - * - * <p>This behavior is not supported for activities with {@link - * android.R.styleable#AndroidManifestActivity_launchMode launchMode} values of - * <code>singleInstance</code> or <code>singleTask</code>. - */ - public static final int FLAG_ACTIVITY_LAUNCH_BEHIND = 0x00001000; /** * If set, when sending a broadcast only registered receivers will be diff --git a/core/java/android/view/IWindowManager.aidl b/core/java/android/view/IWindowManager.aidl index ae59bbc636ff..a61d771b5cfc 100644 --- a/core/java/android/view/IWindowManager.aidl +++ b/core/java/android/view/IWindowManager.aidl @@ -80,7 +80,7 @@ interface IWindowManager void removeWindowToken(IBinder token); void addAppToken(int addPos, IApplicationToken token, int groupId, int stackId, int requestedOrientation, boolean fullscreen, boolean showWhenLocked, int userId, - int configChanges, boolean voiceInteraction); + int configChanges, boolean voiceInteraction, boolean launchTaskBehind); void setAppGroupId(IBinder token, int groupId); void setAppOrientation(IApplicationToken token, int requestedOrientation); int getAppOrientation(IApplicationToken token); |
