1818
1919import android .view .Choreographer ;
2020import androidx .annotation .MainThread ;
21- import java .util .ArrayList ;
2221import java .util .HashMap ;
22+ import java .util .HashSet ;
2323import java .util .Map .Entry ;
2424
2525public class ChoreographerUtils {
2626
2727 public static final String DO_FRAME = "frameUpdate" ;
2828 private static boolean sEnablePostFrame = false ;
29- private static HashMap <Integer , ArrayList <Integer >> sListeners = null ;
29+ private static HashMap <Integer , HashSet <Integer >> sListeners = null ;
3030
3131 private static void handleDoFrameCallback () {
32- for (Entry <Integer , ArrayList <Integer >> entry : sListeners .entrySet ()) {
32+ for (Entry <Integer , HashSet <Integer >> entry : sListeners .entrySet ()) {
3333 Integer rendererId = entry .getKey ();
34- ArrayList <Integer > rootList = entry .getValue ();
35- if (rootList == null ) {
34+ HashSet <Integer > rootSet = entry .getValue ();
35+ if (rootSet == null ) {
3636 continue ;
3737 }
38- for (Integer rootId : rootList ) {
38+ for (Integer rootId : rootSet ) {
3939 EventUtils .sendRootEvent (rendererId , rootId , DO_FRAME , null );
4040 }
4141 }
@@ -62,9 +62,9 @@ public static void registerDoFrameListener(Integer rendererId, Integer rootId) {
6262 if (sListeners == null ) {
6363 sListeners = new HashMap <>();
6464 }
65- ArrayList <Integer > roots = sListeners .get (rendererId );
65+ HashSet <Integer > roots = sListeners .get (rendererId );
6666 if (roots == null ) {
67- roots = new ArrayList <>();
67+ roots = new HashSet <>();
6868 roots .add (rootId );
6969 sListeners .put (rendererId , roots );
7070 } else {
@@ -87,7 +87,7 @@ public static void unregisterDoFrameListener(Integer rendererId, Integer rootId)
8787 if (sListeners == null ) {
8888 return ;
8989 }
90- ArrayList <Integer > roots = sListeners .get (rendererId );
90+ HashSet <Integer > roots = sListeners .get (rendererId );
9191 if (roots != null ) {
9292 roots .remove (rootId );
9393 if (roots .isEmpty ()) {
0 commit comments