代码之家  ›  专栏  ›  技术社区  ›  Nerdy Bunz

这是一个冗余使用处理程序的例子吗?

  •  1
  • Nerdy Bunz  · 技术社区  · 6 年前

    如:

    private Handler firstHandler = new Handler(Looper.getMainLooper());
    private Handler secondHandler = new Handler(Looper.getMainLooper());
    firstHandler.post(...);
    secondHandler.post(...);
    

    ... 它们都发布到了主线程,使用第二个线程是没有意义的吗?

    2 回复  |  直到 6 年前
        1
  •  1
  •   HedeH    6 年前

    这是一个冗余使用处理程序的例子吗?

    对。

    引自 Docs :

    处理程序允许您发送和处理消息和可运行对象 与线程的消息队列关联。每个处理程序实例都是 与单个线程和该线程的消息队列相关联。什么时候? 创建新的处理程序时,它将绑定到的线程/消息队列 创建它的线程——从那时起,它将交付 将消息和runnable添加到该消息队列中,并在执行时执行它们 从消息队列中出来。

    这些处理程序正在向同一个服务器发送消息 MessageQueue ,所以不管怎样,第二个将在第一个完成后运行,这意味着它是多余的。

    更进一步的是 Handler Thread 默认情况下,它是在中创建的。所以如果 处理程序 main thread 不必指定循环器。

        2
  •  0
  •   UVM    6 年前

    "MessageQueue" . 有关更多信息,请访问以下链接:

    What is the purpose of Looper and how to use it?