android系统键盘输入代码补充说明

这篇博客深入探讨了Android键盘子系统的输入处理,特别是dispatchOnce函数中的keyRepeatTimeout和keyRepeatDelay参数,以及键盘事件的调度和处理流程。博主分享了在长按事件中的处理策略,如何避免系统自动生成重复事件,并提供了关键的日志分析。
摘要由CSDN通过智能技术生成

写了这么多年软件,键盘就几十块钱一个,最近工作需要研究下android的键盘子系统,发现一个破键盘的驱动也够复杂啊,很多细节网上也找不的答案,自己一行一行的看,把网上没写清楚的加深一点奉献给大家:

dispatchOnce函数的前两个值:

nsecs_t keyRepeatTimeout = mPolicy->getKeyRepeatTimeout(); //检测是否是长按的超时时间
nsecs_t keyRepeatDelay = mPolicy->getKeyRepeatDelay();//重复发送长按事件的delay时间


函数里面的nextWakeupTime是用来标识下次唤醒的时间,由函数dispatchOnceInnerLocked(keyRepeatTimeout, keyRepeatDelay, & nextWakeupTime);计算出来。


收到键盘事件不马上处理,先放到mPendingEvent里面,加入策略处理函数,然后马上再次调度线程处理,

01-01 01:01:00.822  2404  2735 D InputDispatcher: tony.log: Is mPendingEvent NULL:0llx
01-01 01:01:00.822  2404  2735 D InputDispatcher: tony.log: get into retirving queue branch
01-01 01:01:00.822  2404  2735 D InputDispatcher: tony.log: dispatchEvent TYPE_KEY(2), queueSize: 0
01-01 01:01:00.822  2404  2735 D InputDispatche

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值