summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2018-01-04 01:32:27 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2018-01-04 01:32:27 +0000
commitc9f362bd5491dfe2687a07da28c36bfa7f8045f2 (patch)
treebc53680f72a36ec80bd57f3b1f54fa620750e98d /core/java/android
parent6ba0a4937849726b7d2920bfa77945600f4a19a6 (diff)
parent5249bb11b7644be073263138dab5c12d7de4a078 (diff)
Merge "Revert "Fix object pool for lifecycler""
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/app/ActivityThread.java4
-rw-r--r--core/java/android/app/servertransaction/ClientTransaction.java5
-rw-r--r--core/java/android/app/servertransaction/ObjectPool.java22
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);
}
}