在活动之间传递处理程序

时间:2012-01-20 23:39:22

标签: android android-activity

我正在主活动上运行一些线程,当这些线程正在运行时,我正在创建一个子活动来显示线程的结果。

主要活动通过处理程序通知线程的结果(即使其状态为onPause(),因为运行子活动)。我想在主要活动和子活动之间做同样的事情,如下所示:

我通过调用((MainActivity) getParent()).setMainActivityHandler(handler)来初始化主活动中的处理程序,从子活动向主活动传递另一个处理程序,其中setMainActivityHandler()只是主活动中处理程序的初始化方法。然后,当线程通过其处理程序向主活动发送Message时,主要活动将通过另一个处理程序向子活动发送另一个Message的相同按摩或修改版本。因此,子活动将根据此消息的内容更新视图。

但是,((MainActivity) getParent())会返回null。我怎么能设法做到这一点。还有其他方法吗?

PS:这两项活动都会扩展活动。清单文件具有针对主要活动(action.VIEW& category.DEFAULT)的意图过滤器,没有针对子活动的意图过滤器。

1 个答案:

答案 0 :(得分:0)

而不是直接处理程序,您希望为此使用Messenger,这是为进程间/活动消息传递而设计的。

我这样做的方法是运行一个Service,它绑定到正在运行的任何活动,并根据后台任务向它发送消息,但我认为你可以省去这个。

您可以尝试在第二个活动中声明静态信使,在创建子活动时初始化它,并且当静态信使不为空时仅从主活动向其发送消息(在暂停/销毁时将其归零)子活动,或静态跟踪(如果显示)