В чем разница между методами onKey(), OnKeyDown() и dispatchKeyEvent(), предоставляемыми Android?
Я хотел бы знать, когда и где каждый из них может быть использован.
Прошу пролить свет на это.
Разница между методами onKey(), OnKeyDown() и dispatchKeyEvent(), предоставляемыми Android?
Ответ 1
Отслеживание исходного кода 5.1 Источник для класса просмотра. Казалось бы, dispatchKeyEvent()
- это первый метод, который вызывается системой. Перегрузка будет предотвращать вызов всех и всех ключевых событий, если не будет вызвана базовая версия.
dispatchKeyEvent()
Первый шаг - попытаться передать событие onKeyListener
, если он есть. Это когда вызывается onKey()
. Если реализация onKey()
возвращает true
, dispatchKeyEvent()
вернется туда, и другие события не будут вызываться.
Если не существует метода onKeyListener
или onKeyListener
onKey()
, возвращенного false
, dispatchKeyEvent()
затем вызовет KeyEvent
dispatch()
. Затем в свою очередь вызовите все методы в KeyEvent.Callback
на вашем представлении. Это включает onKeyDown()
и onKeyUp()
.
Ответ 2
DispatchKeyEvent Ключевые события оборудования всегда отображаются в режиме просмотра в настоящее время. Они отправляются начиная с вершины иерархии "Вид", а затем вниз, пока они не достигнут соответствующего пункта назначения. Если в вашем представлении (или ребенке вашего вида) в настоящее время есть фокус, вы можете увидеть перемещение события через метод dispatchKeyEvent(). Короче говоря, dispatchKeyEvent() будет вызываться только в том случае, если TextView/EditText находится в фокусе.
onKeyDown Вызывается, когда клавиша нажата и не обрабатывается ни одним из видов внутри действия