这篇用来介绍可被观察的数据,用来实现界面当数据改变时自动更新。
可被观察的数据
参考官网:使用可观察的数据对象。基础的可被观察的数据:
- ObservableBoolean
- ObservableChar
- ObservableShort
等等……都是继承自androidx.databinding.BaseObservable,看下核心源码:
public class BaseObservable implements Observable {
private transient PropertyChangeRegistry mCallbacks;
...
public void notifyChange() {
synchronized (this) {
if (mCallbacks == null) {
return;
}
}
mCallbacks.notifyCallbacks(this, 0, null);
}
...
public void notifyPropertyChanged(int fieldId) {
synchronized (this) {
if (mCallbacks == null) {
return;
}
}
mCallbacks.notifyCallbacks(this, fieldId, null);
}
}
public class CallbackRegistry<C, T, A> implements Cloneable {
...
private List<C> mCallbacks = new ArrayList<C>();
...
private void notifyCallbacks(T sender, int arg, A arg2, final int startIndex,
final int endIndex, final long bits) {
long bitMask = 1;
for (int i = startIndex; i < endIndex; i++) {
if ((bits & bitMask) == 0) {
mNotifier.onNotifyCallback(mCallbacks.get(i), sender, arg, arg2);
}
bitMask <<= 1;
}
}
...
public abstract static class NotifierCallback<C, T, A> {
public abstract void<