責(zé)任鏈設(shè)計(jì)模式是一個(gè)面向?qū)ο蟮乃枷敫虬拢欠庋b的思想。
Handler的 dispatchMessage msg.callback不為null時(shí)就交給 handleCallback(msg)去處理妓肢,mCallback 自身不為null時(shí)授段,就自己處理秸架,要是為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就不會(huì)再調(diào)用onClick事件
public boolean dispatchTouchEvent(MotionEvent event) {
if (!result && onTouchEvent(event)) {
result = true;
}
}
return result;
}