android如何处理GUI事件?

Mik*_*e G 6 java user-interface android

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

1- Looper.loop()是应用程序或OS looper的主循环吗?

2- ViewRootImpl(处理程序).dispatchMessage(消息)驻留在哪里?应用程序还是OS?

3-我可以在主循环器中拦截GUI生成的事件吗?如果是的话怎么样?

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

在此输入图像描述

Com*_*are 2

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

我不知道你认为“操作系统循环程序”是什么。Looper如果这就是你的意思的话,你的流程中的运行。

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

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

我可以在主循环程序中拦截 GUI 生成的事件吗?

只能通过修改固件来替换各种类,就像ViewRootImpl用自己的代码一样。

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

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