【问题标题】:Go back to a specific activity without starting it again返回特定活动而不重新开始
【发布时间】:2019-08-28 08:46:48
【问题描述】:

'假设我有活动 A、B、C、D。 我开始这些活动,例如 A->B->C->D 现在我想点击一个按钮回到A而不加载它 再次数据。 注意:我不希望这一切都在后台。

我已经试过了。'

Intent intent = new Intent(getActivity(),
A.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

'但原因是它再次启动了A。再次调用所有 api。

我想要的是那个。例如我有两个活动,比如 1,2 我像 1->2 一样开始它们 现在如果我在一个按钮上完成 2 click 1 将显示给我没有 重新开始。我想要通过点击从 D 到 A 的相同内容 按钮不在后按。'

【问题讨论】:

  • startactivityforresult() 会做
  • manifest 中将启动模式设置为singleTop。并打开相同的活动并将标志设置为intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
  • @sanjeev 基本上明确地将启动模式设置为除多个之外的任何内容都可以
  • @sanjeev 是的,我猜.... :D 最好还是告诉他一切,让他找出最适合他的需要,你永远不知道什么时候单顶会咬你
  • @Kushan 是的。有时他可能想重新加载它并且可能无法正常工作,并且可能还有另一个堆栈帖子:P

标签: java android android-intent stack


【解决方案1】:

只使用一个明确的顶部标志会导致目标活动首先被销毁,然后重新创建。为避免这种情况,请使用两个标志:

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);

这将导致活动无法完成,因此您的 API 调用不会再次发生。如果您需要,您在此处用于启动活动 A 的意图将被传递到活动 A 中的 onNewIntent() 方法。

这一切都假设您没有在您的活动清单声明中指定任何启动模式正在使用“多重”启动模式。

根据文档:

如果它已经声明它的启动模式为“multiple”(默认)并且你没有在同一个意图中设置FLAG_ACTIVITY_SINGLE_TOP,那么它将被完成并重新创建;对于所有其他启动模式,或者如果设置了 FLAG_ACTIVITY_SINGLE_TOP,则此 Intent 将被传递到当前实例的 onNewIntent()。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多