Подтвердить что ты не робот

Разница между методами onKey(), OnKeyDown() и dispatchKeyEvent(), предоставляемыми Android?

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

4b9b3361

Ответ 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 Вызывается, когда клавиша нажата и не обрабатывается ни одним из видов внутри действия