Java程式碼簡潔之道
阿新 • • 發佈:2019-02-07
private final ArraySet<Object> mListeners = new ArraySet<>();
public void setListening(Object listener, boolean listening) {
if (listening) {
if (mListeners.add(listener) && mListeners.size() == 1) {
if (DEBUG) Log.d(TAG, "setListening " + true);
mHandler.obtainMessage(H.SET_LISTENING, 1, 0).sendToTarget();
}
} else {
if (mListeners.remove(listener) && mListeners.size() == 0) {
if (DEBUG) Log.d(TAG, "setListening " + false);
mHandler.obtainMessage(H.SET_LISTENING, 0, 0).sendToTarget();
}
}
}
看android原始碼的時候看到了上面的一段,覺得這段兒寫的真不錯,精妙之處就在兩個if語句。這段程式碼的目的是:
1.往mListeners中新增一個listener物件;
2.在mListeners size>0時觸發mHandler傳送一個訊息,且該訊息只發送一次;
3.在mListeners被清空之後再次觸發mHandler傳送一個訊息