【问题标题】:Android Activity management安卓活动管理
【发布时间】:2013-05-09 07:48:32
【问题描述】:

我有一个关于活动管理的问题。假设我有 4 个活动,例如 A1、A2、A3、A4。现在 A1 有一个按钮来启动活动 A2。 A2 有 2 个启动 A3 或 A4 的按钮,A3 有 2 个启动活动 A4 和 A1 的按钮。 A4 有 3 个按钮来启动活动 A1、A2、A3 我在任何这个活动中都不使用完成方法。所以现在用户点击任何活动的任何按钮而不是检查活动,这已经在后台了吗?如果是,则此活动不会生成新实例并启动已经在后台的活动。否则它会产生新的坚持。

【问题讨论】:

  • 简而言之,我只想知道这是活动已经在后台,如果是......而不是如何让它出现在前面......

标签: android android-activity back-stack


【解决方案1】:

您可以通过在Intent 的标志中包含FLAG_ACTIVITY_REORDER_TO_FRONT 来实现此行为,然后像往常一样调用startActivity(intent)

【讨论】:

  • 在这种情况下不使用FLAG_ACTIVITY_REORDER_TO_FRONT 会更有意义吗?因为用户可能会返回到现在启动活动顶部的其他活动。
  • @shoerat 你说得对,我很困惑。对我来说是清晨:-)。你的评论是在我修复之后才出现的。
  • @Barend 感谢您的回答。目前您的回答很好。在我实施之后,我会接受它。 +1...
【解决方案2】:

意图意图 = new Intent();

intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

开始活动(意图);

【讨论】:

    【解决方案3】:

    您可以通过 Google 搜索“android:lunchMode”。 然后你会得到答案。

    【讨论】:

    • 如果你在AndroidManifest.xml中设置了android:lunchMode = singleTask,那么activity stack中的activity就是Singleton。当你启动一个已经在 Activity 堆栈中的 Activity 时,系统不会创建一个新的实例,它会将它放在堆栈的顶部。
    【解决方案4】:

    每当在任何活动中单击按钮时,它都会创建活动的新实例,而不管活动是否已经在活动堆栈上。由于每次都会触发新的 Intent,因此它会打开新的活动。 当我们按下后退按钮时,它只会从堆栈中转到已经打开的活动。

    【讨论】:

    • 谢谢!!我知道这个但是。如果有这么多的活动相互连接而不是可能已经在后台创建..
    猜你喜欢
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多