KeyEvent
http://blog.csdn.net/elfylin/article/details/8008763
一. 接口
KeyEvent.Callback和View.OnKeyListener
二. 流程
a.Activity.dispatchKeyEvent
a.1.win.superDispatchKeyEvent(win=getWindow)
Window.superDispatchKeyEvent->PhoneWindow.superDispatchKeyEvent
a.2mDecor.superDispatchKeyEvent (mDecor=FrameLayout)
PhoneWindow.mDecor.superDispatchKeyEvent
a.3view. dispatchKeyEvent (Window.dispatchKeyEvent)
View.dispatchKeyEvent(View=mDecor)
b.event.dispatch
mOnKeyListener.onKey
三.Event
a. who call onKeyDown?
b. who call dispatchKeyevent
c. dispatchKeyEvent的实现在PhoneWindow.dispatchKeyEvent
PhoneWindows重载了View的dispatchKeyEvent和KeyEventCallback的OnKeyXX
首先调用dispatchKeyEvent,如果返回false才调用onKeyXX
在其父类View的dispatchKeyEvent,会调用KeyListener。
四.优先级
1.当一个Activity中收到事件,首先查看自己的decor是否有焦点,
1.1如果有调用它的dispatchKeyEvent,(即调用它的keylistener);
1.2否则,获取焦点窗口,调用焦点窗口的dispatchKeyEvent;
2.如果上面都为false,就调用自己的onkeydown和onkeyup事件。
五 入口
HelloworldActivity.onKeyDown(int, KeyEvent) line: 25
KeyEvent.dispatch(KeyEvent$Callback, KeyEvent$DispatcherState, Object) line: 2555
HelloworldActivity(Activity).dispatchKeyEvent(KeyEvent) line: 2358
HelloworldActivity.dispatchKeyEvent(KeyEvent) line: 29
PhoneWindow$DecorView.dispatchKeyEvent(KeyEvent) line: 1806
ViewRootImpl.deliverKeyEventPostIme(KeyEvent, boolean) line: 3328
ViewRootImpl.handleFinishedEvent(int, boolean) line: 3301
ViewRootImpl.handleMessage(Message) line: 2461
ViewRootImpl(Handler).dispatchMessage(Message) line: 99
Looper.loop() line: 137
ActivityThread.main(String[]) line: 4444
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]
Method.invoke(Object, Object...) line: 511
ZygoteInit$MethodAndArgsCaller.run() line: 787
ZygoteInit.main(String[]) line: 554
NativeStart.main(String[]) line: not available [native method]
KeyEvent的更多相关文章
- Android中的Keyevent
使用Adb shell command直接送key event給Android adb shell input keyevent 7 # for key '0' adb shell input key ...
- Android按键事件处理流程 -- KeyEvent
刚接触Android开发的时候,对touch.key事件的处理总是一知半解,一会是Activity里的方法,一会是各种View 中的,自己始终不清楚到底哪个在先哪个在后,总之对整个处理流程没能很好的把 ...
- adb shell input keyevent code详解
adb shell input keyevent 7 # for key '0' adb shell input keyevent 8 # for key '1' adb shell input ke ...
- Android keyevent 中的各个值
Android keyevent 中的各个值,在使用adb shell input 的时候用得到. 是从http://blog.csdn.net/huiguixian/article/details/ ...
- out/target/common/obj/PACKAGING/public_api.txt android.view.KeyEvent.KEYCODE_has changed value from
编译出错: out/target/common/obj/PACKAGING/public_api.txt:22549: error 17: Field android.view.KeyEvent.KE ...
- android KeyEvent for dot "."
android连接了4x4的物理按键,需要映射".". 在linux驱动层注册了按键KEY_DOT, 写android的app的时候却没有对应的宏KEYCODE_DOT.只有KEY ...
- Android Tv 中的按键事件 KeyEvent 分发处理流程
这次打算来梳理一下 Android Tv 中的按键点击事件 KeyEvent 的分发处理流程.一谈到点击事件机制,网上资料已经非常齐全了,像什么分发.拦截.处理三大流程啊:或者 dispatchTou ...
- Android View框架总结(九)KeyEvent事件分发机制
请尊重分享成果,转载请注明出处: http://blog.csdn.net/hejjunlin/article/details/52335094 本篇开始分析按键消息事件分发(PS:本篇文章中源码均是 ...
- ADB——keyevent命令
基本格式 adb shell input keyevent xxx # xxx为具体操作对应的数字 keycode 官方 KEYCODE 链接:戳这里 0 KEYCODE_UNKNOWN 未知按键 1 ...
随机推荐
- mysql死锁——mysql之四
1.MySQL常用存储引擎的锁机制 MyISAM和MEMORY采用表级锁(table-level locking) BDB采用页面锁(page-level locking)或表级锁,默认为页面锁 In ...
- SCSI接口图文详解
目前存储设备的接口有五大类:IDE.SCSI.USB,并行口,串口,其中并行口与串口的速度非常慢,不提也罢,最主要的就是IDE,usb,SCSI.IDE(Integrated Drive Electr ...
- 如果设置Keil从C代码编译出来的hex文件地址从0x8000开始
和MON51的设置一样,这样作:1.把Startup.a51拷贝到工程目录加入工程,修改125行的 CSEG AT 0 为 CSEG AT 0X8000 ...
- Qt带来的是更加低廉的开发成本和学习成本,对于很多小公司而言,这种优势足以让他们获得更大的利润空间 good
不能单纯从技术上来看待这个问题,Qt本来是小众的开发平台,个人认为,它的出现只是解决特性场景的特定问题,Qt带来的是更加低廉的开发成本和学习成本,对于很多小公司而言,这种优势足以让他们获得更大的利润空 ...
- jquery判断元素是否隐藏的多种方法
第一种:使用CSS属性 复制代码 代码如下: var display =$('#id').css('display'); if(display == 'none'){ alert("被 ...
- win7 奇怪的temp用户
在C:\Users\TEMP 有个temp用户,win+r打开的也是 C:\Users\TEMP>,而不是C:\User\Administrator. 以下文章转自: http://hi.bai ...
- Unix/Linux环境C编程入门教程(37) shell常用命令演练
cat命令 cat命令可以用来查看文件内容. cat [参数] 文件名. grep-指定文件中搜索指定字符内容. Linux的目录或文件. -path '字串' 查找路径名匹配所给字串的所有文件 ...
- UESTC_Islands 2015 UESTC Training for Data Structures<Problem J>
J - Islands Time Limit: 30000/10000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Su ...
- Word Ladder II 解答
Question Given two words (beginWord and endWord), and a dictionary's word list, find all shortest tr ...
- Unsupported Media Type 415问题解决办法(Ajax)
场景:Ajax传一个json对象到服务器,让参数自动封装至与json对象匹配的java对象中. 错误类型 错误类型1: "status":415 "error" ...