demo下载地址:http://download.csdn.net/detail/android_zhengyongbo/9870639
1.观察者
public interface Observer<T> {
void updateData(String eventName,T t);//刷新操作
}
2.被观察者
public interface Subject<T> {
void add(Observer<T> observer);
void notifyObserver(String eventName,T t);
void remove(Observer<T> observer);
}
3.观察者管理类
import java.util.ArrayList;
import java.util.List;
public class ObserverManager implements Subject {
private static ObserverManager observerManager;
// 观察者接口集合
private List<Observer> observers = new ArrayList<>();
/**
* 单例
*/
public static ObserverManager getInstance() {
if (null == observerManager) {
synchronized (ObserverManager.class) {
if (null == observerManager) {
observerManager = new ObserverManager();
}
}
}
return observerManager;
}
/**
* 加入监听队列
*/
@Override
public void add(Observer observer) {
observers.add(observer);
}
/**
* 通知观察者刷新数据
*/
@Override
public void notifyObserver(String eventName,Object o) {
for (Observer observer : observers) {
observer.updateData(eventName,o);
}
}
/**
* 监听队列中移除
*/
@Override
public void remove(Observer observer) {
if (observers.contains(observer)) {
observers.remove(observer);
}
}
}
4.使用
1.在需要更新数据的类中实现Obserer接口,onCreate中添加注册:
ObserverManager.getInstance().add(this);在onDestory中移除观察者:
ObserverManager.getInstance().remove(this);
2.在被观察者中数据改变时,进行通知:ObserverManager.getInstance().notifyObserver(eventName,str);