我想了解在 android 中单击按钮时会发生什么。所以我为简单的按钮点击设置了几个断点。图片显示了单击按钮时发生的情况我的问题是:(GUI 生成的事件是由于与 GUI 交互而生成的事件,例如按钮单击、编辑文本等……)
1- Looper.loop() 是应用程序的主循环还是操作系统循环程序?
2- ViewRootImpl(handler).dispatchMessage(Message) 在哪里?应用程序还是操作系统?
3- 我可以在主循环程序中拦截 GUI 生成的事件吗?如果是那么怎么办?
4- 我们可以安全地假设所有 GUI 生成的事件都在 ViewRootImpl(handler).handleCallback(Message) 中处理吗?
最佳答案
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/