mirror of
https://github.com/samsonjs/media.git
synced 2026-04-27 15:07:40 +00:00
Avoid using ConcurrentHashMap
Use Collections.synchronizedSet() instead of creating a set from a ConcurrentHashMap because ConcurrentHashMap has a bug in APIs 21/22 that can result in lost updates. PiperOrigin-RevId: 453696565
This commit is contained in:
parent
c5b881e089
commit
d506c709c9
2 changed files with 6 additions and 4 deletions
|
|
@ -43,10 +43,10 @@ import androidx.media3.session.MediaSession.ControllerInfo;
|
||||||
import java.lang.ref.WeakReference;
|
import java.lang.ref.WeakReference;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
|
||||||
import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
|
import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -472,7 +472,8 @@ public abstract class MediaSessionService extends Service {
|
||||||
Context context = serviceReference.getApplicationContext();
|
Context context = serviceReference.getApplicationContext();
|
||||||
handler = new Handler(context.getMainLooper());
|
handler = new Handler(context.getMainLooper());
|
||||||
mediaSessionManager = MediaSessionManager.getSessionManager(context);
|
mediaSessionManager = MediaSessionManager.getSessionManager(context);
|
||||||
pendingControllers = Collections.newSetFromMap(new ConcurrentHashMap<>());
|
// ConcurrentHashMap has a bug in APIs 21-22 that can result in lost updates.
|
||||||
|
pendingControllers = Collections.synchronizedSet(new HashSet<>());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -83,10 +83,10 @@ import com.google.common.util.concurrent.MoreExecutors;
|
||||||
import java.lang.ref.WeakReference;
|
import java.lang.ref.WeakReference;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Deque;
|
import java.util.Deque;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.CancellationException;
|
import java.util.concurrent.CancellationException;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -109,7 +109,8 @@ import java.util.concurrent.ExecutionException;
|
||||||
this.sessionImpl = new WeakReference<>(sessionImpl);
|
this.sessionImpl = new WeakReference<>(sessionImpl);
|
||||||
sessionManager = MediaSessionManager.getSessionManager(sessionImpl.getContext());
|
sessionManager = MediaSessionManager.getSessionManager(sessionImpl.getContext());
|
||||||
connectedControllersManager = new ConnectedControllersManager<>(sessionImpl);
|
connectedControllersManager = new ConnectedControllersManager<>(sessionImpl);
|
||||||
pendingControllers = Collections.newSetFromMap(new ConcurrentHashMap<>());
|
// ConcurrentHashMap has a bug in APIs 21-22 that can result in lost updates.
|
||||||
|
pendingControllers = Collections.synchronizedSet(new HashSet<>());
|
||||||
}
|
}
|
||||||
|
|
||||||
public ConnectedControllersManager<IBinder> getConnectedControllersManager() {
|
public ConnectedControllersManager<IBinder> getConnectedControllersManager() {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue