Android中的按钮,菜单按钮,菜单抽屉按钮等视图是否不同步?
我要问的是,单击后的那些视图是否在下一个周期执行。
谢谢。
答案 0 :(得分:1)
是的,异步。
如果您在onClick代码中设置了断点,则会在堆栈中的某处看到类似以下内容的跟踪记录:
at android.view.View$PerformClick.run
at android.os.Handler.handleCallback
at android.os.Handler.dispatchMessage
at android.os.Looper.loop
at android.app.ActivityThread.main
这应该使您了解从Looper和Handler调用onClick的事实-在这种情况下,是主线程的Looper和Handler。
有关如何从硬件捕获低级触摸事件并由Android处理的细节不是公开的,而是以本机代码完成的。
但是您应该依靠的是,在主(UI)线程上调用了View点击事件。
答案 1 :(得分:1)
点击带有附加this&isjust&a&test$
的{{1}}时,一条消息将发布到主线程的消息队列中。通常,这种感觉是瞬时的,但是由于这种异步特性,有可能使某些UI事件以您不期望的顺序发生。
例如,假设一个View
会在您点击第二个OnClickListener
时被禁用。从技术上来说是可能的(虽然非常困难),但要足够快地敲击每个按钮,以使在处理第一条消息之前(第二个按钮被按下之前)将第二个按钮的敲击发布到主线程的消息队列中。禁用)。