Merge "android.os.Message: respect sPoolSize"

This commit is contained in:
Brad Fitzpatrick
2011-01-25 15:12:18 -08:00
committed by Android Code Review

View File

@ -85,9 +85,9 @@ public final class Message implements Parcelable {
// sometimes we store linked lists of these things
/*package*/ Message next;
private static Object mPoolSync = new Object();
private static Message mPool;
private static int mPoolSize = 0;
private static final Object sPoolSync = new Object();
private static Message sPool;
private static int sPoolSize = 0;
private static final int MAX_POOL_SIZE = 10;
@ -96,11 +96,12 @@ public final class Message implements Parcelable {
* avoid allocating new objects in many cases.
*/
public static Message obtain() {
synchronized (mPoolSync) {
if (mPool != null) {
Message m = mPool;
mPool = m.next;
synchronized (sPoolSync) {
if (sPool != null) {
Message m = sPool;
sPool = m.next;
m.next = null;
sPoolSize--;
return m;
}
}
@ -237,12 +238,12 @@ public final class Message implements Parcelable {
* freed.
*/
public void recycle() {
synchronized (mPoolSync) {
if (mPoolSize < MAX_POOL_SIZE) {
synchronized (sPoolSync) {
if (sPoolSize < MAX_POOL_SIZE) {
clearForRecycle();
next = mPool;
mPool = this;
next = sPool;
sPool = this;
sPoolSize++;
}
}
}
@ -453,4 +454,3 @@ public final class Message implements Parcelable {
replyTo = Messenger.readMessengerOrNullFromParcel(source);
}
}