package com.dpt.tbase.app.base.utils; import java.util.Collection; import java.util.LinkedList; public class TimeObserverQueue<E extends TimeObserver> extends LinkedList<TimeObserver> { /** * */ private static final long serialVersionUID = 1675023904426152435L; private static TimeObserverQueue<TimeObserver> mQueue; public static TimeObserverQueue<? extends TimeObserver> getTimeObserverQueue(){ if(mQueue==null){ mQueue = new TimeObserverQueue<TimeObserver>(); } return mQueue; } public static TimeObserverQueue<? extends TimeObserver> getTimeObserverQueue(Collection<? extends TimeObserver> collection){ if(mQueue==null){ mQueue = new TimeObserverQueue<TimeObserver>(collection); } return mQueue; } private TimeObserverQueue() { super(); } private TimeObserverQueue(Collection<? extends TimeObserver> collection) { super(collection); } @Override public boolean add(TimeObserver object) { boolean add = super.add(object); try { if (add) { TimerManager.initTimerManager().addObserver(object); } return add; } catch (Exception e) { e.printStackTrace(); return false; } } @Override public void clear() { TimerManager.initTimerManager().deleteObservers(); TimerManager.initTimer().cancel(); TimerManager.stop(); super.clear(); } public boolean remove(TimeObserver object) { boolean remove = super.remove(object); if(remove){ TimerManager.initTimerManager().deleteObserver(object); if(this.size()==0){ clear(); } } return remove; } }