访问返回栈中立即activity的一个方法

Access a method of the immediate activity in the back-stack

所以场景很简单。 我有两个活动,A 和 B。 A是首页,从A可以到B。 在 Activity A 中有一个名为 setupDetails() 的私有方法来更新缓存的用户信息。 因此,在 activity B 中,当操作完成时,我想调用 setupDetails() Activity A(又名父 activity)的方法。有可能这样做吗?不,我不是在谈论 onActivityResults() 或广播监听器。我想直接从 Activity B 访问该方法。我尝试搜索类似的问题,但找不到合适的答案,因此将其张贴在这里。

你可以做到这一点,但它有点老套。

ActivityA中,创建一个ActivityA类型的public static变量,像这样:

public static ActivityA instance;

ActivityA启动ActivityB之前,它可以在变量中存储对自身的引用(即:instance = this)。

ActivityB中,想调用ActivityA中的方法时,直接调用public static变量上的方法即可,即:

ActivityA.instance.setupDetails();

这应该大部分有效,但在某些情况下它不起作用。一个示例是,如果您启动了 ActivityB,然后应用程序进入后台。在一段时间不活动后,Android 将终止托管该应用程序的 OS 进程。当用户 returns 访问该应用程序时,Android 将为该应用程序创建一个新的 OS 进程并仅实例化 ActivityB。在这种情况下,没有 ActivityA 的实例,因此变量 ActivityA.instance 将是 null。为了防止 NPE,您可以检查这种情况。