首先事件分发,一大串不说了,最后onTouchEvent()会调用View的performClick(),这个方***产生一个Runnable去跑OnClickListener的onClick()回调方法,具体跑的方法是由mAttachInfo的handler成员的post()方法,也就说是这个button依附到父节点时,mAttachInfo非空时,onClick()才能跑在依附到父节点的线程上。
自己看源码看的,可能不对,仅供参考