可点击视图是异步的?

Clickable Views are asychronous?

android 中的按钮、菜单按钮、菜单抽屉按钮等视图是否是异步的?

我想问的是点击时的那些视图是否在下一个周期执行。

谢谢。

是的,异步。

如果您在 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

这应该会让您了解 onClick 是从 Looper 和 Handler 调用的 - 在本例中是主线程的 Looper 和 Handler。

关于如何从硬件捕获低级触摸事件并由 Android 处理的详细信息不是 public 并且是在本机代码中完成的。

但您应该指望在主 (UI) 线程上调用视图点击事件。

当您点击附加了 OnClickListenerView 时,一条消息将发布到主线程的消息队列中。通常这会感觉是瞬时的,但由于这种异步性质,有可能让某些 UI 事件以你不期望的顺序发生。

例如,假设一个 Button 在您点击它时禁用第二个 Button技术上可能(尽管非常困难),足够快地点击每个按钮,以便在处理第一条消息之前(在第二个按钮被禁用)。