注:下文摘自RickAi的博客
从源码角度看InputManagerService-RickAi
类图
整体流程图
- 用户轻点屏幕,linux 内核产生中断,向 /dev/input/ 目录下的设备文件 eventxx 下入数据
- native 层,EventHub 通过 epoll 监测到文件被写入,使用 inotify 读取文件中的数据
- InputReader 将事件数据解析成装满 RawEvent 的缓冲区中,随后批量使用 InputMapper 进行处理
- 用户的触摸事件最终被加工为 NotifyMotionArgs,随后被批量插入到 InputDispatcher 的队列中
- InputDispacher 从队列中取出 EventEntry 数据进行派发
- 获取触摸事件目标窗口列表,使用 socketpair 向客户端发送输入事件
- 客户端在将事件分发到各个窗口,处理完毕后会调用 finish 告诉服务端事件已经处理完成
- InputDispatcher 收到事件处理完成通知,重新初始化 ANR 相关变量
IMS 初始化与启动
输入事件的读取与解析
输入事件的处理与反馈
FEATURED TAGS
Android
debug
dumpsys
shell
linux
Permission
心理学
ubuntu
JNI
markdown
android
IMS
systemui
selinux
eSIM
androidstudio
performance
pms
wms
view
flutter
iptables
netd
property
c++
kernel
mqtt
usb
company
statusbar
docker
hardware
webrtc
recovery
web
camera
rk3288
A133
driver
rockchip
rk3399
chip
rk3588
a133
qt
t113
buildroot
AI
MCU