关于Android事件传递机制

本文详细解析了Android中事件在Activity、ViewGroup及View之间的传递机制。介绍了关键函数的作用,并解释了当事件被消费后的传递流程变化,以及这种机制如何影响Android的响应速度。

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

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

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

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

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

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

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

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

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

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

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

的这一套流程了。

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

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

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

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

请大神赐教!!!!!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值