diff options
3 files changed, 31 insertions, 18 deletions
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java index 571bc6efeac5..4ed2fd7449b1 100644 --- a/core/java/android/app/Activity.java +++ b/core/java/android/app/Activity.java @@ -5300,8 +5300,7 @@ public class Activity extends ContextThemeWrapper */ public boolean isTaskRoot() { try { - return ActivityManagerNative.getDefault() - .getTaskForActivity(mToken, true) >= 0; + return ActivityManagerNative.getDefault().getTaskForActivity(mToken, true) >= 0; } catch (RemoteException e) { return false; } diff --git a/services/core/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java index d215fc60ea5b..3da0f8d9c778 100755 --- a/services/core/java/com/android/server/am/ActivityRecord.java +++ b/services/core/java/com/android/server/am/ActivityRecord.java @@ -16,22 +16,21 @@ package com.android.server.am; -import static com.android.server.am.ActivityManagerDebugConfig.*; +import static android.app.ActivityManager.StackId.FREEFORM_WORKSPACE_STACK_ID; +import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_CONFIGURATION; +import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_SAVED_STATE; +import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_SWITCH; +import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_THUMBNAILS; +import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_STATES; +import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_SWITCH; +import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_THUMBNAILS; +import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; +import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.am.TaskRecord.INVALID_TASK_ID; import android.app.ActivityManager.TaskDescription; -import android.app.PendingIntent; -import android.os.PersistableBundle; -import android.os.Trace; - -import com.android.internal.app.ResolverActivity; -import com.android.internal.content.ReferrerIntent; -import com.android.internal.util.XmlUtils; -import com.android.server.AttributeCache; -import com.android.server.am.ActivityStack.ActivityState; -import com.android.server.am.ActivityStackSupervisor.ActivityContainer; - import android.app.ActivityOptions; +import android.app.PendingIntent; import android.app.ResultInfo; import android.content.ComponentName; import android.content.Intent; @@ -45,9 +44,11 @@ import android.os.Build; import android.os.Bundle; import android.os.IBinder; import android.os.Message; +import android.os.PersistableBundle; import android.os.Process; import android.os.RemoteException; import android.os.SystemClock; +import android.os.Trace; import android.os.UserHandle; import android.util.EventLog; import android.util.Log; @@ -57,9 +58,12 @@ import android.view.AppTransitionAnimationSpec; import android.view.IApplicationToken; import android.view.WindowManager; -import org.xmlpull.v1.XmlPullParser; -import org.xmlpull.v1.XmlPullParserException; -import org.xmlpull.v1.XmlSerializer; +import com.android.internal.app.ResolverActivity; +import com.android.internal.content.ReferrerIntent; +import com.android.internal.util.XmlUtils; +import com.android.server.AttributeCache; +import com.android.server.am.ActivityStack.ActivityState; +import com.android.server.am.ActivityStackSupervisor.ActivityContainer; import java.io.File; import java.io.IOException; @@ -69,6 +73,10 @@ import java.util.ArrayList; import java.util.HashSet; import java.util.Objects; +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlPullParserException; +import org.xmlpull.v1.XmlSerializer; + /** * An entry in the history stack, representing an activity. */ @@ -398,6 +406,11 @@ final class ActivityRecord { } } + boolean isFreeform() { + return task != null && task.stack != null + && task.stack.mStackId == FREEFORM_WORKSPACE_STACK_ID; + } + static class Token extends IApplicationToken.Stub { private final WeakReference<ActivityRecord> weakActivity; private final ActivityManagerService mService; diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index 80d531e71f3e..6845bf025189 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -2260,7 +2260,8 @@ public final class ActivityStackSupervisor implements DisplayListener { // Also put noDisplay activities in the source task. These by itself can // be placed in any task/stack, however it could launch other activities // like ResolverActivity, and we want those to stay in the original task. - if (r.isResolverActivity() || r.noDisplay) { + if ((r.isResolverActivity() || r.noDisplay) && sourceRecord != null + && sourceRecord.isFreeform()) { addingToTask = true; } } |