1.观察者DataWatcher 实现Observer 接口。
2.被观察者DataChange继承Observable 类。
3.观察者DataWatcher 向被观察者 DataChange 订阅事件(将观察者DataWatcher添加到被观察者DataChange里面去)。
4.被观察者DataChange数据有改变,通知观察者DataWathcer相应的数据有改变,请作出相应的操作。
5.观察者DataWather 向被观察者 DataChange取消订阅事件(将观察者DataWatcher从被观察者DataChange中移除)
1.观察者类
public class DataWatcher implements Observer{ @Override public void update(Observable o, Object arg) { //观察者接受到被观察者的通知,来更新自己的数据操作。 Data mData = (Data)arg; Log.i("Test", "mData---->>"+mData.getDataChange()); } }
2.被观察者类
public class DataChange extends Observable { private static DataChange instance = null; public static DataChange getInstance() { if (null == instance) { instance = new DataChange(); } return instance; } public void notifyDataChange(Data data) { //被观察者怎么通知观察者数据有改变了呢??这里的两个方法是关键。 setChanged(); //通知所有订阅者改变的内容 notifyObservers(data); } }
3.操作类
//注册观察者 DataChange.getInstance().addObserver(watcher); //模拟被观察者数据改变,更新数据。 Data mData = new Data(); mData.setDataChange(0); //更新数据 DataChange.getInstance().notifyDataChange(mData);
@Override protected void onResume() { super.onResume(); //观察者往被观察者中添加订阅事件。 } @Override protected void onPause() { super.onPause(); //观察者从被观察者队列中移除 DataChange.getInstance().deleteObserver(watcher); }
注意:注册要在数据改变之前