安卓如何处理图形用户界面事件?

6

我正在努力理解Android中按钮被点击时会发生什么。所以我为简单的按钮点击设置了几个断点。下面这张图片展示了当一个按钮被点击时会发生什么。我的问题如下:(GUI生成的事件是由于与GUI的交互而产生的事件,例如按钮点击、编辑文本等...)

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

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

3- 我可以拦截主循环中的GUI生成的事件吗?如果可以,那么如何拦截?

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

enter image description here

1个回答

2

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

我不知道你认为的“操作系统looper”是什么意思。如果你指的是进程,那么Looper在进程中运行。

ViewRootImpl(handler).dispatchMessage(Message)位于哪里?应用还是操作系统?

我不知道你在这个上下文中所说的“操作系统”是什么意思。ViewRootImpl是Dalvik编译的类,加载到你的Dalvik虚拟机中,在进程内部执行其代码。否则,你就无法在堆栈跟踪中看到它。

我能够在主循环中截取GUI生成的事件吗?

只能通过修改固件以替换各种类(如ViewRootImpl)来实现。

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接