/// <summary> /// Remove the specified observer. /// </summary> public void RemoveObserver(IObserver observer) { if (observer == null || _observers.Count == 0) { return; } var enumerator = _observers.GetEnumerator(); while (enumerator.MoveNext()) { R.Id message = enumerator.Current.Key; List <WeakReference> observers = _observers[message]; if ((observers == null || observers.Count == 0) == false) { observers.RemoveAll(IsExpiredObserver); for (int i = 0; i < observers.Count; i++) { WeakReference weakReference = observers[i]; if (IsEquals(weakReference, observer)) { observers.RemoveAt(i); break; } } } } }
/// <summary> /// Remove the specified observer. /// </summary> public void RemoveObserver(IObserver observer, R.Id message) { if (observer == null || !_observers.ContainsKey(message)) { return; } List <WeakReference> observers = _observers[message]; if ((observers == null || observers.Count == 0) == false) { for (int i = 0; i < observers.Count; i++) { WeakReference weakReference = observers[i]; if (IsEquals(weakReference, observer)) { observers.RemoveAt(i); break; } } if (observers.Count == 0) { _observers.Remove(message); } } }
public static Notification Create(R.Id id) { Notification notification = Create(); notification.id = id; return(notification); }
public static Notification Create(R.Id id, float data) { Notification notification = Create(); notification.id = id; notification.floatExtra = data; return(notification); }
public static Notification Create(R.Id id, long data) { Notification notification = Create(); notification.id = id; notification.longExtra = data; return(notification); }
public static Notification Create(R.Id id, bool data) { Notification notification = Create(); notification.id = id; notification.boolExtra = data; return(notification); }
public static Notification Create(R.Id id, object data) { Notification notification = Create(); notification.id = id; notification.dataExtra = data; return(notification); }
public Notification() { this.id = R.Id.None; intExtra = 0; floatExtra = 0f; stringExtra = string.Empty; longExtra = 0; boolExtra = false; dataExtra = null; }
public void Clear() { id = R.Id.None; intExtra = 0; floatExtra = 0f; stringExtra = string.Empty; longExtra = 0; boolExtra = false; dataExtra = null; }
public Notification(R.Id id, object data) { this.id = id; intExtra = 0; floatExtra = 0f; stringExtra = string.Empty; longExtra = 0; boolExtra = false; dataExtra = data; }
public Notification(R.Id id, bool data) { this.id = id; intExtra = 0; floatExtra = 0f; stringExtra = string.Empty; longExtra = 0; boolExtra = data; dataExtra = null; }
public Notification(R.Id id, string data) { this.id = id; intExtra = 0; floatExtra = 0f; stringExtra = data; longExtra = 0; boolExtra = false; dataExtra = null; }
private void InteralAddObserver(ref Dictionary <R.Id, List <WeakReference> > container , IObserver observer, R.Id message) { if (!container.ContainsKey(message)) { container[message] = new List <WeakReference>(); } List <WeakReference> observers = container[message]; bool isContains = IsContains(observers, observer); if (isContains == false) { container[message].Add(new WeakReference(observer)); } }
private void RemoveObserver(ref Dictionary <R.Id, List <WeakReference> > container , R.Id message) { if (container == null || !container.ContainsKey(message)) { return; } List <WeakReference> observers = container[message]; if ((observers == null || observers.Count == 0) == false) { observers.Clear(); observers = null; } container.Remove(message); }
/// <summary> /// Add a disposable observer for the specific message. /// </summary> public void AddDisposableObserver(IObserver observer, R.Id message) { InteralAddObserver(ref _disposableObservers, observer, message); }
public static void PostDelayed(R.Id id) { PostDelayed(Notification.Create(id)); }
public static void Post(R.Id id) { Instance.InternalPost(Notification.Create(id)); }
/// <summary> /// Add an observer for the specific message. /// </summary> public void AddObserver(IObserver observer, R.Id message) { InteralAddObserver(ref _observers, observer, message); }
public static void Post(R.Id id, object data) { Instance.InternalPost(Notification.Create(id, data)); }