DataSetObserver猜想观察者模式
2013-01-24 15:49
232 查看
frameworks/base/core/java/android/database/DataSetObserver.java
此类的所有代码为:
public abstract class DataSetObserver{
public void onChanged(){}
public void onInvalidated(){}
}
我在想,谁调用onChanged呢?对于观察者,当数据变动时调用onChanged()吧,那应该有数据变动的地方,insert / update /delete
frameworks/base/core/java/android/widget/AdapterView.java内部类AdapterDataSetObserver继承了此类,但它也只是重写了此类中的两个方法,没有写调用关系。
frameworks/base/core/java/android/database/DataSetObserverable.java
此类的所有代码
BaseAdapter
从类BaseAdapter中看,这里的注册和通知动作都是通过DataSetObservable对象的,而DataSetObservable继承了Observable<DataSetObserver>。
因此,要查找那些继承自BaseAdapter,又重写了DataSetObserver的onChanged的函数。
此类的所有代码为:
public abstract class DataSetObserver{
public void onChanged(){}
public void onInvalidated(){}
}
我在想,谁调用onChanged呢?对于观察者,当数据变动时调用onChanged()吧,那应该有数据变动的地方,insert / update /delete
frameworks/base/core/java/android/widget/AdapterView.java内部类AdapterDataSetObserver继承了此类,但它也只是重写了此类中的两个方法,没有写调用关系。
frameworks/base/core/java/android/database/DataSetObserverable.java
此类的所有代码
BaseAdapter
public abstract class BaseAdapter implements ListAdapter, SpinnerAdapter { private final DataSetObservable mDataSetObservable = new DataSetObservable(); public boolean hasStableIds() { return false; } public void registerDataSetObserver(DataSetObserver observer) { mDataSetObservable.registerObserver(observer); } public void unregisterDataSetObserver(DataSetObserver observer) { mDataSetObservable.unregisterObserver(observer); } /** * Notifies the attached View that the underlying data has been changed * and it should refresh itself. */ public void notifyDataSetChanged() { mDataSetObservable.notifyChanged(); } public void notifyDataSetInvalidated() { mDataSetObservable.notifyInvalidated(); } ... }
从类BaseAdapter中看,这里的注册和通知动作都是通过DataSetObservable对象的,而DataSetObservable继承了Observable<DataSetObserver>。
因此,要查找那些继承自BaseAdapter,又重写了DataSetObserver的onChanged的函数。
相关文章推荐
- Android之观察者模式源码分析(DataSetObserver)
- 委托、事件、Observer观察者模式的使用解析二
- 设计模式之Observer观察者模式
- ios大话 观察者模式(Observer)
- Observer 观察者模式 (HeadFirst设计模式 c#)
- 设计模式:观察者(observer)模式
- 设计模式-观察者模式(Observer)
- 观察者模式/Observer
- 设计模式 ( 十七 ):Observer 观察者模式 -- 行为型
- Android 适配器(Adapter)、观察者(Observer) 模式
- Java_观察者模式(Observable和Observer)
- Java设计模式----观察者模式(Observer)
- 设计模式(8):观察者模式 Observer
- 设计模式—观察者模式(Observer)
- 设计模式之观察者(Observer)模式
- 设计模式-行为设计模式:观察者模式 Observer
- 设计模式17:Observer Pattern (观察者模式)
- 设计模式---观察者模式(Observer Pattern with java)
- 观察者设计模式(Observable类Observer接口)的实现demo
- [C++设计模式]observer 观察者模式