
Android输入事件分发与拦截
文章平均质量分 91
阳光玻璃杯
认真,你或许不会输!
展开
-
Android输入事件从读取到分发一:是谁在读取输入事件
零.第一次尝试阅读android输入系统的代码,免不了理解错误,如有错误,欢迎指正。一.提出问题android是基于linux kernel的,linux的事件获取需要读/dev/input下的设备文件节点。对android系统而言,是谁在读这些设备文件节点?读到以后又是怎么把它发送给view的?二.猜测与验证事件是一种看不到的东西,在android下,看不见的东西一般交给se原创 2016-06-18 17:05:01 · 4094 阅读 · 1 评论 -
Android输入事件从读取到分发二:谁在循环监听事件的到来
通过上一节初步阅读代码,已经找到了读写/dev/input/设备文件节点的位置。但是最后,我觉得应该有一个线程,一直循环监听这些输入设备,有事件的时候就去处理,没有事件的时候就睡眠,等待事件的到来。那么,这部分的代码是怎么样的呢?上一节只是为了定位android系统在什么地方监听输入设备,所以很多地方没有仔细分析,这一节,带着文章开头提出的问题,再一次分析源码,而我们的入口,任然是系统启动后,原创 2016-06-18 21:21:23 · 2985 阅读 · 1 评论 -
Android输入事件从读取到分发五:事件分发前的拦截过程
在前面的文章:Android输入事件从读取到分发三:InputDispatcherThread线程分发事件的过程 一文中已经提过事件在分发前要做拦截的事情,只不过当时没有展开来分析,因此这篇文章的主要目的就是分析事件在分发前的拦截过程。 在Android输入事件从读取到分发三:InputDispatcherThread线程分发事件的过程 一文中我们分析到InputDispatcher类的notif原创 2016-11-07 17:26:18 · 14220 阅读 · 0 评论 -
Android输入事件从读取到分发四:InputDispatcherThread发送事件到View结构树的过程
通过上一节的分析,我们发现InputDispatcherThread使用InputChannel的sendMessage方法发送了一条消息,但是我们不知道谁在接收这条消息。因此,这一节我们的目标很明确,弄懂”是谁在接收消息,然后这条消息是怎么分发到View的结构树中的”。 上一节我们说InputChannel的本质是linux本地套接字,因为它内部使用socketpair()函数创建了一对套接字描原创 2016-11-06 21:13:12 · 4484 阅读 · 2 评论 -
Android输入事件从读取到分发三:InputDispatcherThread线程分发事件的过程
分析完事件的读取后,东忙西忙,不知不觉已过去了快五个月了…也不是说没有事件把这部分源码分析完,而是实在是分析不下去,因此转战到其他地方去了。然而这一块始终是心头那不舍的惦记,经过一段时间的沉淀,有参考了网上很多大神的文章,然后再来阅读源码,渐渐感觉到能看出点眉目了。因而事不宜迟,赶紧做个记录吧。 前面两篇文章分析输入事件的读取,通过分析,发现时间的读取是在EventHub类中实现的,EventHu原创 2016-11-04 15:45:12 · 5770 阅读 · 1 评论