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