处理程序是否属于创建它的线程?

Does handler belong to thread in which it was created?

我对“Looper-Handler”这个术语比较陌生。我很清楚他们的工作方式,但仍然对他们的架构感到困惑。 我也经历了几个 SO 问题,但我仍然有一些关于它们的问题。

为了弄清楚并总结一下,有人可以回答以下问题吗?

  1. Handler 是否属于创建它的线程?
  2. 我知道每个 Looper/MeesageQueue 对可以有多个处理程序实例。是否可以为来自其他线程的线程创建 handler
  3. 假设,在主线程中我们写Handler handler = new Handler (x.getLooper())其中x是另一个线程X的handler,那么MessageQueuehandler实际上会post?

如果我有任何错误,请纠正我。谢谢。

  1. 对,如果你使用默认构造函数val h = Handler()。默认构造函数将此处理程序与当前线程的 Looper 相关联。如果此线程没有循环程序,则此处理程序将无法接收消息,因此会引发异常。
  2. 是的。如果您使用构造函数,它接受 Looper val h = Handler(looper),其中 looper 与另一个 Thread.
  3. 关联
  4. handler 将与 Thread X 相关联,因为该线程的循环程序用于创建 handler.

第三题与第二题类似