public void removeScanListener(IScanListener scanListener) {
if (scanListener != null) {
ArrayList<WeakReference<IScanListener>> toRemove = new ArrayList<WeakReference<IScanListener>>();
synchronized (scanListeners) {
for (WeakReference<IScanListener> ref : scanListeners) {
IScanListener listener = ref.get();
if ((listener == null) || listener.equals(scanListener)) {
toRemove.add(ref);
}
}
scanListeners.retainAll(toRemove);
}