调用 startActivity 时在 onStop() 中查找下一个 Activity

hom*_*mtg 5 android android-intent android-activity

通过使用 startActivity() 启动新的 Activity 来调用 onStop() 后,如何确定当前 Activity 的 onStop() 方法中的下一个 Activity 将是哪个 Activity?

我目前唯一的想法:声明我用作全局变量的意图,并使用intent.getClass()或类似的东西在onStop()方法中检查它。这样可以吗?不知怎的,感觉像是一种快速而肮脏的方法。

谢谢你的帮助!

编辑:所以这是场景:

Activity1 是一个列表视图,用户在其中选择一行或多行,然后单击“提交”,所有选定的行现在都在后台任务中提交到服务器。

我在服务中使用一个数组来存储提交之前选择的 id,因此如果用户在没有点击提交的情况下离开列表视图,该数组仍将填充过时的选择。

因此,如果用户选择一行或多行,然后在没有“提交”的情况下退出 Activity1,我希望放弃该选择,因此我确实在 Activity1 的 onStop() 方法中调用一个方法来清除该数组。这很好用,但是当然有不同的方法可以离开 Activity1。例如,我确实有一个包含 3 个条目的上下文菜单,每个条目都会启动另一项活动。

现在,我需要保留数组值,以防仅从上下文菜单中选择一个特殊的单个活动(比方说 Activity2)。

抱歉,如果不清楚,但我不是在谈论活动实例,而是在谈论一般活动的类型。

因此,我在 onStop() 方法中需要知道的是我们是否已从 Activity1 切换到 Activity2.java 或 Activity3.java。

也许 Activity1 的 onStop() 甚至不是我明确或不明确决定的正确位置?

再次感谢

Mik*_*e D 1

您可能想在这里对您的意图进行一些澄清,因为这个问题有点模糊。

默认情况下,当一个 Acitvity 启动时,它被放置在一个称为返回栈的队列中。当活动结束时,它会出列,前一个活动会被带到前台。

启动一个新活动时要小心,如果没有正确设置它,您将创建该活动的一个新实例,即使后台堆栈中已存在该实例。如果我理解你的问题,你会寻找:

Intent intent = new Intent(getContext(), NewClass.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

这将清除除提到的活动之外的堆栈,并将其带到前台(如果它存在于后台堆栈中)。

这个 SO 线程展示了如何清除堆栈(Android 指南)。

看看这里,它描述了如何管理任务和活动,但谷歌警告不要操纵默认行为。