我有一个关于 UI 线程如何工作的小问题。
例如,当用户触摸屏幕上的按钮时,应用程序的 UI 线程将触摸事件分派给小部件,小部件反过来设置其按下状态并将无效请求发送到事件队列。UI 线程将请求出列并通知小部件它应该重绘自己。
所以我的理解是按钮将它的状态设置为按下状态,但是将“无效请求发布到事件队列”意味着什么。这是否仅仅意味着按钮告诉 UI 线程我已将按下状态设置为 true。为什么按钮在将其状态设置为 true 后不会自行绘制?为什么 UI 线程必须告诉它重绘自己?我不知道这在这里有多准确,但它提供了一个稍微好一点的 UI 线程事件调度线程的图示。谁能解释为什么 Widgets 调用 invalidate 到 Dispatch 队列,并且 UI 线程要求小部件自行重绘它?