/**
* Handle system messages here.
*/
public void dispatchMessage(@NonNull Message msg) {
if (msg.callback != null) {
handleCallback(msg);
} else {
if (mCallback != null) {
if (mCallback.handleMessage(msg)) {
return;
}
}
handleMessage(msg);
}
}
代碼中寫Handler
@SuppressLint("HandlerLeak")
Handler handler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(@NonNull Message msg) {
if (expression(msg)){
System.out.println("abc");
return true;
}
return false;
}
}){
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
}
};
Handler handler2 = new Handler(Looper.getMainLooper()){
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
}
};
handler 回調(diào)加重寫方法 handler2 重寫方法(開發(fā)90%在使用)
對于dispatchMessage像是
責(zé)任鏈設(shè)計模式
想象一個流程:
請求來了
↓
A處理?
↓不處理
B處理?
↓不處理
C處理?
↓處理了 ?
結(jié)束
?? 不是所有人都處理,而是“一個個問”