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

如果他们使用相同的 Looper,那么拥有多个 Handler 有什么意义吗?


例如:


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

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

firstHandler.post(...);

secondHandler.post(...);

……他们都发到主线了,有第二个没意义吗?


阿波罗的战车
浏览 191回答 2
2回答

慕后森

是的,两个处理程序都指向相同的"MessageQueue". 

慕运维8079593

这是一个冗余使用处理程序的例子吗?是的。引用自文档:Handler 允许您发送和处理与线程的 MessageQueue 关联的 Message 和 Runnable 对象。每个 Handler 实例都与一个线程和该线程的消息队列相关联。当你创建一个新的 Handler 时,它被绑定到创建它的线程的线程/消息队列——从那时起,它将把消息和可运行对象传递到该消息队列,并在它们从消息中出来时执行它们队列。这些处理程序正在向同一个 发送消息MessageQueue,所以无论如何第二个将在第一个完成后运行,这意味着它是多余的。此外, TheHandler与Thread默认情况下创建的相关联。因此,如果Handler是在 上创建的,则main thread不必指定 Looper。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java