06.输入系统:第10课第8节_输入系统_Dispatcher线程_总体框架

本文深入解析Android系统中Dispatcher线程的工作原理,包括如何从Reader线程接收并分类事件,选择目标应用程序,以及将事件发送至目标队列的过程。探讨了事件处理的两个核心问题:发什么事件以及发给哪个应用程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在前一个课时中,主要讲解了Reader线程线程从驱动读取输入事件,仅做简单的转换,然后转发给Dispatcher线程,该课时主要讲解Dispatcher线程相关内容,该小节我们先讲解ispatcher线程的总体框架,然后在讲解Reader线程给Dispatcher线程发送事件的具体过程,总的框图如下:
在这里插入图片描述
Dispatcher英文是分发的意思,那么有两个问题我们需要解决:
1.发什么
2.发给谁
对于第二个问题,当然是发送给应用程序,发送给众多应用程序中的某些程序,那么有一个选择目标的过程,然后再发送事件。在这之前当然需要获取事件,那么这些事件是从哪里来的?是Reader线程发送的。InputRead线程会把那些事件放入一个叫mInboundQueue的队列之中,这个队列是属于Dispatcher线程,在放入之前,他会做一些处理,把这些事件进行分类,例:如果是紧急的事件(收到来电时,不想打扰别人,我们会按下静音键,或者电源键)。

从mInboundQueue中取出事件的时候,也会稍作处理,比如:读取到的是Home/globle/system按键,那么该按键就不会传递给应用程序。对于user按键事件会把发放到另一个队列中。这个队列是目标APP的队列(outbountQueue)。

android的Dispatcher线程与众多的APP都存在连系,使用connect来表示,其上的outbountQueue就属于connect之中,简单框图如下:
在这里插入图片描述
最后从outbountQueue中取出数据,通过connection发送给APP应用程序。下面是一个很好的图解:
在这里插入图片描述
下面是做标记的框图,与第一幅图的中红色标记的1,2,3,4,5一一对应。
在这里插入图片描述
其中InputReader线程,与Dispather线程,APP所属部分都使用红线分开。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江南才尽,年少无知!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值