Android输入输出机制之来龙去脉之前生后世
这种输入模型在android的系统中很多地方采用,先从最底层说起:
?为了由于触屏事件频率很高,android设计者讲一个循环线程,拆分为两级循环,并做了个队列来进行缓冲。
InputDispatcherThread和InputReaderThread。InputDispatcherThread在自己的循环中对InputReaderThread请求同步,InputReaderThread收到同步信号后,把事件放入InputDispatcher的队列中。
具体代码如下:
InputReader.cpp中有很多InputMapper,有SwitchInputMapper,KeyBoardInputMapper,TrackballInputMapper,SingleTouchInputMapper,
MultiTouchInputMapper。当线程从EventHub读取到Event后,调用这些InputMapper的pocess方法:
?
?
在ViewRoot.java中有这么几行
?
回调的java代码的方法入口为:InputQueue.java中的。@SuppressWarnings("unused") private static void dispatchMotionEvent(InputHandler inputHandler, MotionEvent event, long finishedToken) { Runnable finishedCallback = FinishedCallback.obtain(finishedToken); inputHandler.handleMotion(event, finishedCallback); }?这样就回调到了ViewRoot中
?
?
欢迎光临 www.51droidgame.com 网站进行讨论。
1 楼 lenomon 2012-04-07 这篇文章应该你能给增加些经验,Android事件传递机制【按键事件】