我在主 Activity 上运行一些线程,当这些线程运行时,我正在创建一个子 Activity 来显示线程的结果。
主 Activity 通过处理程序通知有关线程的结果(即使它的状态是 onPause()
,因为正在运行子 Activity )。我想在主要 Activity 和子 Activity 之间做同样的事情,如下所示:
我通过调用 ((MainActivity) getParent()).setMainActivityHandler(handler)
将另一个处理程序从子 Activity 传递到主 Activity 以初始化主 Activity 中的处理程序,其中 setMainActivityHandler( )
只是主 Activity 中处理程序的初始化方法。然后,当线程通过它们的处理程序向主 Activity 发送一个 Message
时,主 Activity 将通过另一个处理程序向子 Activity 发送相同的消息或另一个 Message
的修改版本。因此,子 Activity 将根据此消息的内容更新 View 。
但是,((MainActivity) getParent())
返回 null
。我怎样才能做到这一点。还有其他方法吗?
PS:这两个 Activity 都扩展了 Activity 。 list 文件具有主要 Activity 的 Intent 过滤器(action.VIEW
& category.DEFAULT
),没有用于子 Activity 的 Intent 过滤器。
最佳答案
您希望为此使用 Messenger
而不是直接处理程序,它专为进程间/Activity 消息传递而设计。
我这样做的方法是运行一个服务,它绑定(bind)到任何正在运行的 Activity ,并根据后台任务向它发送消息,但我认为您可以不必这样做。
您可以尝试在第二个 Activity 中声明一个静态信使,在创建子 Activity 时对其进行初始化,并且仅在静态信使不为空时才从主 Activity 向其发送消息(暂停/销毁时将其清空子 Activity ,或静态跟踪是否显示)
关于android - 在 Activity 之间传递处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8949259/