关于Android事件传递机制

来源:互联网 发布:怎样查看电脑mac地址 编辑:程序博客网 时间:2024/06/16 13:12

今天说一个老生常谈的问题,事件在view,viewgroup,activity,这三层是怎么传递的。

介绍事件的传递机制就不得不介绍几个重要的函:

其中事件拦截函数只有在viewgroup里面才有在另外两个里面是没有这个函数的。

下面开始分析事件的传递,假如说这三个都不进行事件的消费,那么事件的顺序应该是

activity的事件分发———viewgroup的事件分发————viewgroup的事件拦截——

view的事件分发——view的事件响应——viewgroup的事件响应——activity的事件响应

这种情况是这三个都不进行事件的消费,假如在activity的的事件响应函数里面返回了

true那么就表明进行了事件的响应,这样的话在第二次再次出发这个事件的时候就不

重新走上面的那个完整的路径了直接就会activity的事件分发——activity的事件响应了

。这个为什么呢?其实到底很简单,走一套完整的路径来确定到底是谁进行事件的消

费一旦确定了是谁来消费这个事件。第二次再触发这个事件的时候也就不用来走完整

的这一套流程了。

现在大家明白了吧,事件的传递机制也决定了Android的反应速度的没有ios的快,在

Android里面你点击了view按照用户最直观的感觉应该是,view最先扑捉事件但是

Android系统却让activity最先来扑捉事件,这样寻找到第是谁来消费事件的机制也

浪费了一点时间。具体Android为什么这么做,不太清楚,小弟还没有那么高的水平还

请大神赐教!!!!!


0 0
原创粉丝点击