如果有多个处理程序使用相同的 Handler 有什么意义吗?
例如:
private Handler firstHandler = new Handler(Looper.getMainLooper());
private Handler secondHandler = new Handler(Looper.getMainLooper());
firstHandler.post(...);
secondHandler.post(...);
。他们都发帖到主线程,有第二个毫无意义吗?
谢谢。
这是冗余使用处理程序的示例吗?
是的。
引自文档:
处理程序允许您发送和处理消息和可运行对象 与线程的消息队列相关联。每个处理程序实例都是 与单个线程和该线程的消息队列相关联。什么时候 你创建一个新的处理程序,它绑定到线程/消息队列 创建它的线程 - 从那时起,它将提供 消息和可运行对象到该消息队列,并按它们执行它们 从消息队列中出来。
这些处理程序正在向同一MessageQueue
发送消息,因此无论如何第二个将在第一个完成后运行,这意味着它是多余的。
此外,默认情况下,Handler
与创建Thread
相关联。因此,如果在main thread
上创建了Handler
,则不必指定 Looper。
是的,两个处理程序都指向相同的"MessageQueue"
。更多信息可以从以下链接获得:
Looper的目的是什么以及如何使用它?