Sự khác nhau giữa các phương thức onKey(), OnKeyDown() và dispatchKeyEvent() do Android cung cấp là gì?
Tôi muốn biết khi nào và ở đâu có thể sử dụng được.
Hãy làm sáng tỏ điều này.Sự khác biệt giữa các phương thức onKey(), OnKeyDown() và dispatchKeyEvent() do Android cung cấp?
Trả lời
Truy tìm mã nguồn của 5.1 Source for the View Class. Có vẻ như dispatchKeyEvent()
là phương pháp đầu tiên được gọi bởi hệ thống. Quá tải nó sẽ ngăn chặn bất kỳ và tất cả các sự kiện quan trọng từ được gọi là trừ khi phiên bản cơ sở được gọi là.
dispatchKeyEvent()
Di chuyển đầu tiên của chúng tôi là cố gắng chuyển sự kiện đến onKeyListener
nếu có. Đây là lúc onKey()
được gọi. Nếu số trả lại thực hiện onKey()
true
, dispatchKeyEvent()
sẽ trả lại ở đó và các sự kiện khác sẽ không được gọi.
Nếu không có onKeyListener
hoặc onKeyListener
'onKey()
phương pháp s trở false
, dispatchKeyEvent()
sau đó sẽ gọi KeyEvent
' dispatch()
phương pháp s. Mà sau đó sẽ lần lượt gọi tất cả các phương thức trong giao diện KeyEvent.Callback
trên chế độ xem của bạn. Điều này bao gồm onKeyDown()
và onKeyUp()
.
không thể nói tốt hơn! – faizal
Giải thích tuyệt vời! – ForeverLearning
Vì vậy, thay vì sử dụng cả hai 'onKeyDown' và' onKeyUp', tôi cũng có thể sử dụng 'dispatchKeyEvent'? Điều này có bất kỳ hạn chế nào không? Tôi đã phải làm điều này, bởi vì 'onKeyDown' sẽ không được kích hoạt cho hầu hết các phím, vì một lý do nào đó. Khi tôi thay đổi thành 'dispatchKeyEvent', nó đã hoạt động. – keinabel