38
38
39
39
import java .security .MessageDigest ;
40
40
import java .util .Arrays ;
41
+ import java .util .HashMap ;
41
42
import java .util .HashSet ;
42
43
import java .util .Iterator ;
43
44
import java .util .Map ;
44
45
import java .util .Set ;
45
- import java .util .concurrent .ConcurrentHashMap ;
46
46
47
47
class OneSignalStateSynchronizer {
48
48
private static boolean nextSyncIsSession = false , waitingForSessionResponse = false ;
@@ -52,7 +52,8 @@ class OneSignalStateSynchronizer {
52
52
// diff will be generated between currentUserState when a sync call is made to the server.
53
53
private static UserState currentUserState , toSyncUserState ;
54
54
55
- static ConcurrentHashMap <Integer , NetworkHandlerThread > networkHandlerThreads = new ConcurrentHashMap <>();
55
+ static HashMap <Integer , NetworkHandlerThread > networkHandlerThreads = new HashMap <>();
56
+ private static final Object networkHandlerSyncLock = new Object () {};
56
57
57
58
private static Context appContext ;
58
59
@@ -590,9 +591,11 @@ private static boolean response400WithErrorsContaining(int statusCode, String re
590
591
}
591
592
592
593
private static NetworkHandlerThread getNetworkHandlerThread (Integer type ) {
593
- if (!networkHandlerThreads .containsKey (type ))
594
- networkHandlerThreads .put (type , new NetworkHandlerThread (type ));
595
- return networkHandlerThreads .get (type );
594
+ synchronized (networkHandlerSyncLock ) {
595
+ if (!networkHandlerThreads .containsKey (type ))
596
+ networkHandlerThreads .put (type , new NetworkHandlerThread (type ));
597
+ return networkHandlerThreads .get (type );
598
+ }
596
599
}
597
600
598
601
private static UserState getUserStateForModification () {
0 commit comments