1. 程式人生 > >Android之Observer和Observable

Android之Observer和Observable

package java.util;
public class Observable {
    private boolean changed = false;
    private final ArrayList<Observer> observers;
public Observable() {
        observers = new ArrayList<>();
}
public synchronized void addObserver(Observer o) {
        if (o == null)
            throw new 
NullPointerException(); if (!observers.contains(o)) { observers.add(o); } } public synchronized void deleteObserver(Observer o) { observers.remove(o); } public void notifyObservers() { notifyObservers(null); } public void notifyObservers(Object arg) {Observer[] arrLocal;
synchronized (this) {if (!hasChanged()) return;arrLocal = observers.toArray(new Observer[observers.size()]); clearChanged(); } for (int i = arrLocal.length-1; i>=0; i--) arrLocal[i].update(this, arg); } public synchronized void deleteObservers() { observers
.clear(); } protected synchronized void setChanged() { changed = true; } protected synchronized void clearChanged() { changed = false; } public synchronized boolean hasChanged() { return changed; } public synchronized int countObservers() { return observers.size(); } }