summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Eric Lin <ericth@google.com> 2024-07-22 17:36:01 +0800
committer Eric Lin <ericth@google.com> 2024-07-23 20:04:09 +0800
commit0b0bfc3da65c94d89e68ca71adbb2184621caec4 (patch)
tree09a2dbb43de085652cffe9d4eaf64bc86565abb3
parentbf6e6a269306add96de96c94156573a313cac072 (diff)
Remove MoveToDisplayItem object pooling (13/n).
Remove the use of ObjectPool in the creation and management of MoveToDisplayItem object. Instead of being obtained from the pool, these objects are now directly instantiated, simplifying their handling and aligning with the broader removal of the object pooling mechanism. Bug: 311089192 Test: atest FrameworksCoreTests:ObjectPoolTests Test: atest FrameworksCoreTests:TransactionParcelTests Flag: EXEMPT removing com.android.window.flags.disable_object_pool Change-Id: Ifda4a2d4ccdd5c1e01d30956a076215e86cb7980
-rw-r--r--core/java/android/app/servertransaction/MoveToDisplayItem.java58
-rw-r--r--core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java7
-rw-r--r--core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java6
-rw-r--r--services/core/java/com/android/server/wm/ActivityRecord.java5
4 files changed, 28 insertions, 48 deletions
diff --git a/core/java/android/app/servertransaction/MoveToDisplayItem.java b/core/java/android/app/servertransaction/MoveToDisplayItem.java
index 8706edd26406..1aa563aa6363 100644
--- a/core/java/android/app/servertransaction/MoveToDisplayItem.java
+++ b/core/java/android/app/servertransaction/MoveToDisplayItem.java
@@ -18,6 +18,8 @@ package android.app.servertransaction;
import static android.os.Trace.TRACE_TAG_ACTIVITY_MANAGER;
+import static java.util.Objects.requireNonNull;
+
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.ActivityThread.ActivityClientRecord;
@@ -33,13 +35,26 @@ import java.util.Objects;
/**
* Activity move to a different display message.
+ *
* @hide
*/
public class MoveToDisplayItem extends ActivityTransactionItem {
- private int mTargetDisplayId;
- private Configuration mConfiguration;
- private ActivityWindowInfo mActivityWindowInfo;
+ private final int mTargetDisplayId;
+
+ @NonNull
+ private final Configuration mConfiguration;
+
+ @NonNull
+ private final ActivityWindowInfo mActivityWindowInfo;
+
+ public MoveToDisplayItem(@NonNull IBinder activityToken, int targetDisplayId,
+ @NonNull Configuration configuration, @NonNull ActivityWindowInfo activityWindowInfo) {
+ super(activityToken);
+ mTargetDisplayId = targetDisplayId;
+ mConfiguration = new Configuration(configuration);
+ mActivityWindowInfo = new ActivityWindowInfo(activityWindowInfo);
+ }
@Override
public void preExecute(@NonNull ClientTransactionHandler client) {
@@ -58,38 +73,9 @@ public class MoveToDisplayItem extends ActivityTransactionItem {
Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER);
}
- // ObjectPoolItem implementation
-
- private MoveToDisplayItem() {}
-
- /** Obtain an instance initialized with provided params. */
- @NonNull
- public static MoveToDisplayItem obtain(@NonNull IBinder activityToken, int targetDisplayId,
- @NonNull Configuration configuration, @NonNull ActivityWindowInfo activityWindowInfo) {
- MoveToDisplayItem instance = ObjectPool.obtain(MoveToDisplayItem.class);
- if (instance == null) {
- instance = new MoveToDisplayItem();
- }
- instance.setActivityToken(activityToken);
- instance.mTargetDisplayId = targetDisplayId;
- instance.mConfiguration = new Configuration(configuration);
- instance.mActivityWindowInfo = new ActivityWindowInfo(activityWindowInfo);
-
- return instance;
- }
-
- @Override
- public void recycle() {
- super.recycle();
- mTargetDisplayId = 0;
- mConfiguration = null;
- mActivityWindowInfo = null;
- ObjectPool.recycle(this);
- }
-
// Parcelable implementation
- /** Write to Parcel. */
+ /** Writes to Parcel. */
@Override
public void writeToParcel(@NonNull Parcel dest, int flags) {
super.writeToParcel(dest, flags);
@@ -98,12 +84,12 @@ public class MoveToDisplayItem extends ActivityTransactionItem {
dest.writeTypedObject(mActivityWindowInfo, flags);
}
- /** Read from Parcel. */
+ /** Reads from Parcel. */
private MoveToDisplayItem(@NonNull Parcel in) {
super(in);
mTargetDisplayId = in.readInt();
- mConfiguration = in.readTypedObject(Configuration.CREATOR);
- mActivityWindowInfo = in.readTypedObject(ActivityWindowInfo.CREATOR);
+ mConfiguration = requireNonNull(in.readTypedObject(Configuration.CREATOR));
+ mActivityWindowInfo = requireNonNull(in.readTypedObject(ActivityWindowInfo.CREATOR));
}
public static final @NonNull Creator<MoveToDisplayItem> CREATOR = new Creator<>() {
diff --git a/core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java b/core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java
index 098e92e812b5..d5a7d51097d1 100644
--- a/core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java
+++ b/core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java
@@ -24,7 +24,6 @@ import static org.junit.Assert.assertNotSame;
import android.annotation.NonNull;
import android.os.IBinder;
import android.platform.test.annotations.Presubmit;
-import android.window.ActivityWindowInfo;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
@@ -68,12 +67,6 @@ public class ObjectPoolTests {
}
@Test
- public void testRecycleMoveToDisplayItem() {
- testRecycle(() -> MoveToDisplayItem.obtain(mActivityToken, 4, config(),
- new ActivityWindowInfo()));
- }
-
- @Test
public void testRecycleNewIntentItem() {
testRecycle(() -> NewIntentItem.obtain(mActivityToken, referrerIntentList(), false));
}
diff --git a/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java b/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java
index dd4aa1dde54d..644e9f4dd562 100644
--- a/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java
+++ b/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java
@@ -108,12 +108,12 @@ public class TransactionParcelTests {
final ActivityWindowInfo activityWindowInfo = new ActivityWindowInfo();
activityWindowInfo.set(true /* isEmbedded */, new Rect(0, 0, 500, 1000),
new Rect(0, 0, 500, 500));
- MoveToDisplayItem item = MoveToDisplayItem.obtain(mActivityToken, 4 /* targetDisplayId */,
- config(), activityWindowInfo);
+ final MoveToDisplayItem item = new MoveToDisplayItem(mActivityToken,
+ 4 /* targetDisplayId */, config(), activityWindowInfo);
writeAndPrepareForReading(item);
// Read from parcel and assert
- MoveToDisplayItem result = MoveToDisplayItem.CREATOR.createFromParcel(mParcel);
+ final MoveToDisplayItem result = MoveToDisplayItem.CREATOR.createFromParcel(mParcel);
assertEquals(item.hashCode(), result.hashCode());
assertEquals(item, result);
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index e8aced824420..32a01cb71cbb 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -1467,8 +1467,9 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
+ "display, activityRecord=%s, displayId=%d, config=%s", this, displayId,
config);
- mAtmService.getLifecycleManager().scheduleTransactionItem(app.getThread(),
- MoveToDisplayItem.obtain(token, displayId, config, activityWindowInfo));
+ final MoveToDisplayItem item =
+ new MoveToDisplayItem(token, displayId, config, activityWindowInfo);
+ mAtmService.getLifecycleManager().scheduleTransactionItem(app.getThread(), item);
} catch (RemoteException e) {
// If process died, whatever.
}