1. 程式人生 > >Java程式碼簡潔之道

Java程式碼簡潔之道

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傳送一個訊息