【问题标题】:Find next Activity in onStop() when call startActivity调用 startActivity 时在 onStop() 中查找下一个 Activity
【发布时间】:2012-02-18 18:52:40
【问题描述】:

在使用 startActivity() 启动新 Activity 调用 onStop() 后,我如何确定当前 Activity 的 onStop() 方法中的下一个 Activity?

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

感谢您的帮助!

编辑: 所以这里是场景:

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

我在我的服务中使用一个数组来存储提交之前选择的 id,所以如果用户离开列表视图而没有点击提交,这个数组仍然会被过时的选择填充。

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

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

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

所以在 onStop() 方法中我只需要知道我们是否已从 Activity1 切换到 Activity2.java 或 Activity3.java。

也许 Activity1 的 onStop() 甚至不适合我做出明确或不明确的决定?

再次感谢

【问题讨论】:

    标签: android android-activity android-intent


    【解决方案1】:

    您可能想在此处添加一些关于您的意图的说明,因为这个问题有点含糊。

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

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

    Intent intent = new Intent(getContext(), NewClass.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
    

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

    This SO thread 显示如何清除堆栈 (Android guide)。

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

    【讨论】:

    • 您好,刚刚编辑了问题。我希望这使它更清楚一点。谢谢!
    猜你喜欢
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-24
    • 1970-01-01
    • 2019-07-17
    • 2011-04-11
    相关资源
    最近更新 更多