package fm.jiecao.jcvideoplayer_lib; import java.lang.ref.WeakReference; import java.util.LinkedList; /** * Put JCVideoPlayer into layout * From a JCVideoPlayer to another JCVideoPlayer * Created by Nathen on 16/7/26. */ public class JCVideoPlayerManager { public static WeakReference<JCMediaPlayerListener> CURRENT_SCROLL_LISTENER; public static LinkedList<WeakReference<JCMediaPlayerListener>> LISTENERLIST = new LinkedList<>(); public static void putScrollListener(JCMediaPlayerListener listener) { if (listener.getScreenType() == JCVideoPlayer.SCREEN_WINDOW_TINY || listener.getScreenType() == JCVideoPlayer.SCREEN_WINDOW_FULLSCREEN) return; CURRENT_SCROLL_LISTENER = new WeakReference<>(listener);//每次setUp的时候都应该add } public static void putListener(JCMediaPlayerListener listener) { LISTENERLIST.push(new WeakReference<>(listener)); } public static void checkAndPutListener(JCMediaPlayerListener listener) { if (listener.getScreenType() == JCVideoPlayer.SCREEN_WINDOW_TINY || listener.getScreenType() == JCVideoPlayer.SCREEN_WINDOW_FULLSCREEN) return; int location = -1; for (int i = 1; i < LISTENERLIST.size(); i++) { JCMediaPlayerListener jcMediaPlayerListener = LISTENERLIST.get(i).get(); if (listener.getUrl().equals(jcMediaPlayerListener.getUrl())) { location = i; } } if (location != -1) { LISTENERLIST.remove(location); if (LISTENERLIST.size() <= location) { LISTENERLIST.addLast(new WeakReference<>(listener)); } else { LISTENERLIST.set(location, new WeakReference<>(listener)); } } } public static JCMediaPlayerListener popListener() { if (LISTENERLIST.size() == 0) { return null; } return LISTENERLIST.pop().get(); } public static JCMediaPlayerListener getFirst() { if (LISTENERLIST.size() == 0) { return null; } return LISTENERLIST.getFirst().get(); } public static void completeAll() { JCMediaPlayerListener ll = popListener(); while (ll != null) { ll.onCompletion(); ll = popListener(); } } }