Ответ 1
Я не эксперт GWT, но это то, что я собираю, глядя на источник GWT:
-
Все EventHandlers (в конечном итоге) вызывают
addDomHandler(..)
, который вызываетsinkEvents()
.sinkEvents()
является более низким уровнем и является обтекателем браузера-абстракции вокруг собственной обработки событий javascript.EventHandlers создаются поверх sinkEvents, поэтому они предоставляют всю функциональность, которая имеет sinkEvents.
Но по-разному они отличаются: с EventHandlers вы можете зарегистрироваться для разных типов событий с разными обработчиками событий, которые могут находиться в разных классах. События будут автоматически перенаправлены соответствующим обработчикам. С помощью sinkEvents вы можете зарегистрироваться для разных типов событий (через int, а не для типа), но всегда будет вызываться этот виджет
onBrowserEvent(event)
. -
EventHandlers добавляют определенные накладные расходы. Это спорно, если это имеет значение вообще.
-
EventHandlers - это безопасный тип для добавления и удаления обработчиков событий и автоматического способа для маршрутизации событий для зарегистрированных обработчиков по вашему выбору. Если вы используете GWT Widgets, вы должны использовать EventHandlers.