summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorLouis Chang <louischang@google.com>2021-08-23 09:51:49 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-08-23 09:51:49 +0000
commit20579de6c29c293f46b150e1aeeb29e59d965e76 (patch)
tree73dfd0d9080a9ffabc2fa76766cacac12ca52152 /core/java
parent05a96f6aaeedba247101af6eaea643328afd33fc (diff)
parenteec6c21ef81f3484c7df2707a47ae2b5813fa9a8 (diff)
Merge "Prevent activity being destroyed immediately if embedded" into sc-v2-dev am: eec6c21ef8
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15537319 Change-Id: Ia84d2e44c707eab2975f50344a5e5f6f43e88213
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/window/WindowContainerTransaction.java52
1 files changed, 51 insertions, 1 deletions
diff --git a/core/java/android/window/WindowContainerTransaction.java b/core/java/android/window/WindowContainerTransaction.java
index 342df4f9eee3..387837d82acf 100644
--- a/core/java/android/window/WindowContainerTransaction.java
+++ b/core/java/android/window/WindowContainerTransaction.java
@@ -516,11 +516,13 @@ public final class WindowContainerTransaction implements Parcelable {
*/
@NonNull
public WindowContainerTransaction setAdjacentTaskFragments(
- @NonNull IBinder fragmentToken1, @Nullable IBinder fragmentToken2) {
+ @NonNull IBinder fragmentToken1, @Nullable IBinder fragmentToken2,
+ @Nullable TaskFragmentAdjacentOptions options) {
final HierarchyOp hierarchyOp =
new HierarchyOp.Builder(HierarchyOp.HIERARCHY_OP_TYPE_SET_ADJACENT_TASK_FRAGMENTS)
.setContainer(fragmentToken1)
.setReparentContainer(fragmentToken2)
+ .setLaunchOptions(options != null ? options.toBundle() : null)
.build();
mHierarchyOps.add(hierarchyOp);
return this;
@@ -1298,4 +1300,52 @@ public final class WindowContainerTransaction implements Parcelable {
}
}
}
+
+ /**
+ * Helper class for building an options Bundle that can be used to set adjacent rules of
+ * TaskFragments.
+ * @hide
+ */
+ public static class TaskFragmentAdjacentOptions {
+ private static final String DELAY_PRIMARY_LAST_ACTIVITY_REMOVAL =
+ "android:transaction.adjacent.option.delay_primary_removal";
+ private static final String DELAY_SECONDARY_LAST_ACTIVITY_REMOVAL =
+ "android:transaction.adjacent.option.delay_secondary_removal";
+
+ private boolean mDelayPrimaryLastActivityRemoval;
+ private boolean mDelaySecondaryLastActivityRemoval;
+
+ public TaskFragmentAdjacentOptions() {
+ }
+
+ public TaskFragmentAdjacentOptions(@NonNull Bundle bundle) {
+ mDelayPrimaryLastActivityRemoval = bundle.getBoolean(
+ DELAY_PRIMARY_LAST_ACTIVITY_REMOVAL);
+ mDelaySecondaryLastActivityRemoval = bundle.getBoolean(
+ DELAY_SECONDARY_LAST_ACTIVITY_REMOVAL);
+ }
+
+ public void setDelayPrimaryLastActivityRemoval(boolean delay) {
+ mDelayPrimaryLastActivityRemoval = delay;
+ }
+
+ public void setDelaySecondaryLastActivityRemoval(boolean delay) {
+ mDelaySecondaryLastActivityRemoval = delay;
+ }
+
+ public boolean isDelayPrimaryLastActivityRemoval() {
+ return mDelayPrimaryLastActivityRemoval;
+ }
+
+ public boolean isDelaySecondaryLastActivityRemoval() {
+ return mDelaySecondaryLastActivityRemoval;
+ }
+
+ Bundle toBundle() {
+ final Bundle b = new Bundle();
+ b.putBoolean(DELAY_PRIMARY_LAST_ACTIVITY_REMOVAL, mDelayPrimaryLastActivityRemoval);
+ b.putBoolean(DELAY_SECONDARY_LAST_ACTIVITY_REMOVAL, mDelaySecondaryLastActivityRemoval);
+ return b;
+ }
+ }
}