Ответ 1
Почему они решили, что каждый пользователь ButterKnife нуждается в этом?
Предположим, что у вас есть кнопка, и событие click на этой кнопке запускает новое действие. Теперь, что произойдет, когда пользователь очень быстро удвоит кнопку? Есть вероятность, что прослушиватель кликов будет запущен два раза, поэтому будут запущены 2 действия, которые вам больше всего не нужны.
Что это означает DebouncingOnClickListener
, он уверяет, что последующий прослушиватель кликов не будет рассматриваться. Как только произойдет первый клик, последующие клики будут игнорироваться до следующего кадра, когда они будут включены.
Когда вы выполняете действие с представлением, вы публикуете событие на MessageQueue
. Теперь, когда первый клик происходит, вы публикуете событие - запускаете новую активность. И вы немедленно отправляете другое событие - включите прослушиватель кликов в следующем кадре. Второе событие гарантировано произойдет после первого, поскольку в очереди было post()
ed.
Что произойдет, если я хочу получить более одного щелчка на одном фрейме?
Если вам разрешено получать несколько последующих событий щелчка, вы должны использовать @OnTouch
, потому что вы заинтересованы в событии касания и не в событиях кликов.
Слушайте @Piwai разъяснение в отношении случая Фрагментированный подкаст # 88 (начиная с 38:20).