Разница между методами onKey (), OnKeyDown () и dispatchKeyEvent (), предоставляемыми Android? - PullRequest
31 голосов
/ 21 октября 2011

В чем разница между методами onKey (), OnKeyDown () и dispatchKeyEvent (), предоставляемыми Android?
Я хотел бы знать, когда и где каждый из них может быть использован.
Пожалуйста, пролите немного света на это.

Ответы [ 2 ]

48 голосов
/ 01 сентября 2012

Отслеживание исходного кода источника 5.1 для класса представления .Казалось бы, dispatchKeyEvent() - это первый метод, вызываемый системой.Его перегрузка предотвратит любое и все ключевые события, если не будет вызвана базовая версия.

dispatchKeyEvent() Первый шаг - попытка передать событие в onKeyListenerесли есть.Это когда onKey() вызывается.Если реализация onKey() вернет true, dispatchKeyEvent() вернется туда и другие события не будут вызваны.

Если нет onKeyListener или метода onKeyListener onKey(), возвращенногоfalse, dispatchKeyEvent() вызовет метод KeyEvent dispatch().Это, в свою очередь, вызовет все методы в интерфейсе KeyEvent.Callback на вашем представлении.Это включает onKeyDown() и onKeyUp().

0 голосов
/ 06 апреля 2018

DispatchKeyEvent События аппаратных клавиш всегда доставляются в представление, которое в данный момент находится в фокусе.Они отправляются, начиная с вершины иерархии View, а затем вниз, пока не достигнут нужного места назначения.Если ваш View (или дочерний элемент вашего View) в настоящее время имеет фокус, то вы можете увидеть перемещение события с помощью метода dispatchKeyEvent ().Короче говоря, dispatchKeyEvent () будет вызываться, только если TextView / EditText находится в фокусе.

onKeyDown Вызывается, когда клавиша нажата и не обрабатывается ни одним из представлений внутри действия

...