责任链设计模式是一个面向对象的思想,是封装的思想。
Handler的 dispatchMessage msg.callback不为null时就交给 handleCallback(msg)去处理,mCallback 自身不为null时,就自己处理,要是为null就handleMessage(msg)处理。
public void dispatchMessage(@NonNull Message msg) {
if (msg.callback != null) {
handleCallback(msg);
} else {
if (mCallback != null) {
if (mCallback.handleMessage(msg)) {
return;
}
}
handleMessage(msg);
}
}
View中的dispatchTouchEvent 这里返回true就不会再调用onClick事件
public boolean dispatchTouchEvent(MotionEvent event) {
if (!result && onTouchEvent(event)) {
result = true;
}
}
return result;
}