TIL Android touch event dispatching involves at least 2 queues on the system_server side, and then a socketpair to send the touch event to the target app / window, which read the touch event socket while polling for the next main thread event (another queue!), dispatches the touch event then send an ack on the other socket of the pair. If the ACK isn't received in time by system_server: ANR