android - 在 Activity 之间传递处理程序

标签 android android-activity

我在主 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/

相关文章:

android - 使用AnimatorSet在两个View之间实现卡片翻转动画

java - 将 Android 应用程序安装限制在 Android 手机上

java - 如何避免在后台运行时启动应用程序时显示闪屏?

android - 如何在 AlertDialog 中获得可导航到新 Activity 的可点击超链接?

android - 使用自定义 Intent 启动 Activity ,抛出 ACTIVITY NOT FOUND EXCEPTION

android - 根据 Activity 更改主题?

android - onClickListener 在 onLongClickListener 之后触发

java - 从 onOptionsItemSelected 显示对话框

java - Android:从 GLSurfaceView 返回到主要 Activity

android - 如何实现 'first-use'/教程 Activity