这是冗余使用处理程序的示例吗?



如果有多个处理程序使用相同的 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的目的是什么以及如何使用它?

相关内容

最新更新