可点击的视图不同步?

时间:2018-10-20 00:11:18

标签: android android-view

Android中的按钮,菜单按钮,菜单抽屉按钮等视图是否不同步?

我要问的是,单击后的那些视图是否在下一个周期执行。

谢谢。

2 个答案:

答案 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时被禁用。从技术上来说是可能的(虽然非常困难),但要足够快地敲击每个按钮,以使在处理第一条消息之前(第二个按钮被按下之前)将第二个按钮的敲击发布到主线程的消息队列中。禁用)。