diff options
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/app/ActivityThread.java | 4 | ||||
| -rw-r--r-- | core/java/android/app/servertransaction/ClientTransaction.java | 5 | ||||
| -rw-r--r-- | core/java/android/app/servertransaction/ObjectPool.java | 22 |
3 files changed, 10 insertions, 21 deletions
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index aaa6bf0333a2..de346f315016 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -1768,9 +1768,7 @@ public final class ActivityThread extends ClientTransactionHandler { (String[]) ((SomeArgs) msg.obj).arg2); break; case EXECUTE_TRANSACTION: - final ClientTransaction transaction = (ClientTransaction) msg.obj; - mTransactionExecutor.execute(transaction); - transaction.recycle(); + mTransactionExecutor.execute(((ClientTransaction) msg.obj)); break; } Object obj = msg.obj; diff --git a/core/java/android/app/servertransaction/ClientTransaction.java b/core/java/android/app/servertransaction/ClientTransaction.java index 3c96f06945c5..764ceede5d20 100644 --- a/core/java/android/app/servertransaction/ClientTransaction.java +++ b/core/java/android/app/servertransaction/ClientTransaction.java @@ -54,11 +54,6 @@ public class ClientTransaction implements Parcelable, ObjectPoolItem { /** Target client activity. Might be null if the entire transaction is targeting an app. */ private IBinder mActivityToken; - /** Get the target client of the transaction. */ - public IApplicationThread getClient() { - return mClient; - } - /** * Add a message to the end of the sequence of callbacks. * @param activityCallback A single message that can contain a lifecycle request/callback. diff --git a/core/java/android/app/servertransaction/ObjectPool.java b/core/java/android/app/servertransaction/ObjectPool.java index 2fec30a0dde7..98121253f486 100644 --- a/core/java/android/app/servertransaction/ObjectPool.java +++ b/core/java/android/app/servertransaction/ObjectPool.java @@ -16,8 +16,8 @@ package android.app.servertransaction; -import java.util.ArrayList; import java.util.HashMap; +import java.util.LinkedList; import java.util.Map; /** @@ -27,7 +27,7 @@ import java.util.Map; class ObjectPool { private static final Object sPoolSync = new Object(); - private static final Map<Class, ArrayList<? extends ObjectPoolItem>> sPoolMap = + private static final Map<Class, LinkedList<? extends ObjectPoolItem>> sPoolMap = new HashMap<>(); private static final int MAX_POOL_SIZE = 50; @@ -40,9 +40,9 @@ class ObjectPool { public static <T extends ObjectPoolItem> T obtain(Class<T> itemClass) { synchronized (sPoolSync) { @SuppressWarnings("unchecked") - final ArrayList<T> itemPool = (ArrayList<T>) sPoolMap.get(itemClass); + LinkedList<T> itemPool = (LinkedList<T>) sPoolMap.get(itemClass); if (itemPool != null && !itemPool.isEmpty()) { - return itemPool.remove(itemPool.size() - 1); + return itemPool.poll(); } return null; } @@ -56,20 +56,16 @@ class ObjectPool { public static <T extends ObjectPoolItem> void recycle(T item) { synchronized (sPoolSync) { @SuppressWarnings("unchecked") - ArrayList<T> itemPool = (ArrayList<T>) sPoolMap.get(item.getClass()); + LinkedList<T> itemPool = (LinkedList<T>) sPoolMap.get(item.getClass()); if (itemPool == null) { - itemPool = new ArrayList<>(); + itemPool = new LinkedList<>(); sPoolMap.put(item.getClass(), itemPool); } - // Check if the item is already in the pool - final int size = itemPool.size(); - for (int i = 0; i < size; i++) { - if (itemPool.get(i) == item) { - throw new IllegalStateException("Trying to recycle already recycled item"); - } + if (itemPool.contains(item)) { + throw new IllegalStateException("Trying to recycle already recycled item"); } - if (size < MAX_POOL_SIZE) { + if (itemPool.size() < MAX_POOL_SIZE) { itemPool.add(item); } } |
