From 05877c57b72aa22a55a3933dc254e8d2bb9e80b7 Mon Sep 17 00:00:00 2001 From: hyb1996 <946994919@qq.com> Date: Sat, 30 Dec 2017 17:29:57 +0800 Subject: [PATCH] fix hyb1996-guest/auto.js3-issues#5 --- .../java/com/stardust/util/IntentExtras.java | 27 ++++++------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/common/src/main/java/com/stardust/util/IntentExtras.java b/common/src/main/java/com/stardust/util/IntentExtras.java index 04391173..b61a0114 100644 --- a/common/src/main/java/com/stardust/util/IntentExtras.java +++ b/common/src/main/java/com/stardust/util/IntentExtras.java @@ -6,6 +6,7 @@ import android.util.SparseArray; import java.io.Serializable; import java.util.HashMap; import java.util.Map; +import java.util.concurrent.atomic.AtomicInteger; /** * Created by Stardust on 2017/7/11. @@ -13,7 +14,7 @@ import java.util.Map; public class IntentExtras implements Serializable { - private static int mMaxId = -1; + private static AtomicInteger mMaxId = new AtomicInteger(-1); private static final String EXTRA_ID = "com.stardust.util.IntentExtras.id"; private static SparseArray> extraStore = new SparseArray<>(); @@ -25,26 +26,26 @@ public class IntentExtras implements Serializable { public static IntentExtras fromIntent(Intent intent) { int id = intent.getIntExtra(EXTRA_ID, -1); if (id < 0) { - throw new IllegalArgumentException(""); + throw new IllegalArgumentException(); } return new IntentExtras(id); } private Map mMap; - private int mId; private IntentExtras() { mMap = new HashMap<>(); - mMaxId++; - mId = mMaxId; - extraStore.put(mId, mMap); + int id = mMaxId.incrementAndGet(); + extraStore.put(id, mMap); } private IntentExtras(int id) { mMap = extraStore.get(id); + if (mMap == null) { + mMap = new HashMap<>(); + } extraStore.remove(id); - mMaxId = id; } @@ -53,13 +54,6 @@ public class IntentExtras implements Serializable { return (T) mMap.get(key); } - @SuppressWarnings("unchecked") - public T getAndClear(String key) { - T value = (T) mMap.get(key); - recycle(); - return value; - } - public IntentExtras put(String key, Object value) { mMap.put(key, value); return this; @@ -69,9 +63,4 @@ public class IntentExtras implements Serializable { intent.putExtra(EXTRA_ID, mMaxId); return intent; } - - public void recycle() { - extraStore.remove(mId); - mMap = null; - } }