summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorCraig Mautner <cmautner@google.com>2014-07-15 18:37:08 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-07-15 16:05:04 +0000
commit00e7ba05ac2c6b17005ef9cd61d49c595c899aa9 (patch)
tree56fd28ce2895dcc75600125b25a8de7e415145c9 /core/java/android
parent4d922e6f7452d30f2f6085a292cf261d62a1de02 (diff)
parentbb742462781a73bb25516067c8fe6311c1c8a93e (diff)
Merge "Launch activity behind launching task." into lmp-dev
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/app/ActivityManagerNative.java26
-rw-r--r--core/java/android/app/ActivityOptions.java29
-rw-r--r--core/java/android/app/IActivityManager.java5
-rw-r--r--core/java/android/content/Intent.java11
-rw-r--r--core/java/android/view/IWindowManager.aidl2
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);