android真实面试题全解析

【Android必问面试题】Android事件分发机制

2021-02-03  本文已影响0人  不做android

什么是事件分发?

简单来说,就是我们通过屏幕与手机进行交互的时候,每次的点击,移动,长按等会产生一个个的事件。每一个事件又是通过屏幕传递给每一个ViewView接收到这些事件的时候可以对该事件的行进过程进行控制,也就是自己消费掉或者忽略掉。

事件的常见类型

也就是说当手指按下屏幕开始,事件会按照一定的顺序进行产生,知道手指离开屏幕,这样的产生的一系列事件,我们会称之为事件序列
当然不是每一种事件都会被执行,这个我们在之后做讲解。

事件的传递的层级关系

在上面我们都在说当手指按下屏幕,这里对于我们Android app开发者来说就对应了我们每一个Activity,但是Activity只负责声明周期的变化,真正控制视图的是每一个Activity包含的windowwindow中又包含了一个DecorView,这里的DecorView是一个顶级的view,所以view中的所有事件都是要经过DecorView才能传递到每一个view当中。
最终事件传递的层级关系如下图所示:

未命名文件.jpg
由上可知事件传递的主要对象为ActivityViewGroupView这三个。所以我们只需要研究事件在这三个对象间是怎么进行传递的。

Activity的事件分发流程

在Activity中,系统主要通过下面两个方法进行事件传递:

下面看一下Activity的事件分发流程图:


未命名文件 (1).jpg

ViewGroup的事件分发流程

在ViewGroup中,系统主要通过下面三个方法进行事件传递

下面看一下ViewGroup的事件分发流程图:


ViewGroup事件分发流程.jpg

View的事件分发流程

在Activity中,系统主要通过下面两个方法进行事件传递:

View的事件分发流程.jpg

在面试中尽可能的把这三个流程图了解消化,可以简要的画U型图去介绍三者的关系,在说的过程中尽量把每个对象的分发流程说清楚会有很好的加分。

上一篇 下一篇

猜你喜欢

热点阅读