java - android如何处理GUI事件?

标签 java android user-interface

我想了解在 android 中单击按钮时会发生什么。所以我为简单的按钮点击设置了几个断点。图片显示了单击按钮时发生的情况我的问题是:(GUI 生成的事件是由于与 GUI 交互而生成的事件,例如按钮单击、编辑文本等……)

1- Looper.loop() 是应用程序的主循环还是操作系统循环程序?

2- ViewRootImpl(handler).dispatchMessage(Message) 在哪里?应用程序还是操作系统?

3- 我可以在主循环程序中拦截 GUI 生成的事件吗?如果是那么怎么办?

4- 我们可以安全地假设所有 GUI 生成的事件都在 ViewRootImpl(handler).handleCallback(Message) 中处理吗?

enter image description here

最佳答案

Is Looper.loop() the main loop for the application or the OS looper ?

我不知道你认为“OS looper”是什么。 Looper 在您的进程中运行,如果这是您的意思的话。

Where does ViewRootImpl(handler).dispatchMessage(Message) reside? Application or OS?

我不知道您认为“操作系统”在这种情况下是什么。 ViewRootImpl 是一个 Dalvik 编译的类,它被加载到您的 Dalvik VM 中,其代码在您的进程中执行。否则,您将无法在堆栈跟踪中看到它。

Can I intercept GUI generated events in the main looper ?

只能通过修改固件,将ViewRootImpl等各种类替换成自己的代码。

Can we safely assume that all GUI generated events are handled in ViewRootImpl(handler).handleCallback(Message)?

我当然不会做出这样的假设。例如,并非所有应用程序都使用小部件框架(例如游戏)。

关于java - android如何处理GUI事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8214323/

相关文章:

java - 使用 gradle 进行简单的 protobuf 编译

java - 解释琐事 : How many live collections are in a typical heap?

java - 单击按钮时显示 PopupWindow?

android 不允许加载本地资源 :file:///android_asset

java - 如何实现Android与HBase的连接?

user-interface - 三态切换的习语?

java - 具有模拟上下文的 Hadoop 单元测试

java - 从 jni 访问加速度计

css - 仅使用 CSS 设置 "call active"动画

python - 在漫长的过程中与 Tkinter 窗口交互