您当前的位置: 首页 > 
  • 3浏览

    0关注

    417博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

江南才尽,年少无知! 发布时间:2019-03-08 19:10:33 ,浏览量:3

在前一个课时中,主要讲解了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所属部分都使用红线分开。

关注
打赏
1592542134
查看更多评论
立即登录/注册

微信扫码登录

0.0349s