zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

Android 系统事件的帧栈信息打印

Android事件系统 信息 打印
2023-09-14 09:04:19 时间

一 编写测试代码,debug查看帧栈信息
测试代码:

View v = ViewUtil.findView(this, R.id.bt1);

v.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return false;
}
});
将断点打在return false这行,点击debug,然后进入调试模式。查看该事件的帧栈信息,如下截图:
在这里插入图片描述
在这里插入图片描述
ZygoteInit是用来初始化当前App进程,不用关心。Method是用来反射获取ActivityThread,而进程中所有对Activity的操作都是调用ActivityThread中的相关方法。Looper#loop是在ActivityThread的main方法中被调用,于是Looper便加入无限循环地获取Message。ActivityThread和Looper会一直运行到App进程退出才停止。这些都不是本文所关心的,继续往上看。

在Looper循环获取Message时,调用了MessageQueue#nativePollOnce方法。这个native方法又调用了InputEventReceiver#dispathInputEvent方法,从这里framework层便开始了touch事件的传递。</