我遇到了一个相当奇怪的问题。
我有一个抽象的Activity创建一些线程,并通过调用抽象的handleEvent()方法使用Handler处理消息。
在某些事件中,实现此抽象父活动的许多子活动之一是使用意图创建的 - 正常方式。
现在对于奇怪的部分:每个子活动都实现并覆盖抽象活动的handleEvent() - 方法。
然而,handleEvent() - 任何子活动中的方法 - 除了第一个 - 永远不会被调用!
有人可以解释这种行为吗?
试图更清楚:
摘要父母收到事件 - >创建活动ChildA 摘要父母接收事件 - >创建活动ChildB 摘要父母接收事件 - >创建活动ChildC
父接收handleEvent()应该处理的事件 - 但只调用ChildA的handleEvent方法 - 即使ChildB或ChildC是活动的Activity。
任何?
答案 0 :(得分:0)
这是因为:
Each Handler instance is associated with a single thread and that thread's message queue
这意味着如果在一个线程中创建处理程序,则不会在另一个线程中接收消息。要解决此问题,请以这种方式创建Handler
:
Handler yourHandler = new Handler(Looper.getMainLooper());
这会将Handler
与主(UI)线程相关联。