【问题标题】:Activities back stack seems to be lost活动回栈似乎丢失了
【发布时间】:2018-12-06 09:35:35
【问题描述】:

我有 2 个活动:A 和 B
在 B 中,我有一个返回箭头,可以通过调用“finish()”方法返回 A。
它工作正常,除非完成以下操作:

  • 我去B
  • 我将我的应用置于后台
  • 我从“最近的应用程序”恢复我的应用程序
  • 我按下返回箭头,然后,应用程序完成,而不是返回活动 A。

有什么帮助吗?

【问题讨论】:

  • 嗨..你能分享你正在尝试的代码吗?
  • 不要在你的 manifest/java 文件中使用启动模式。
  • 没错。我尝试了一个测试项目,它似乎与launchMode="singleInstance"有关。我正在努力,看看我能做什么

标签: android android-activity back-stack activity-finish


【解决方案1】:

我想出了如何解决这个问题:
正如@Karthikeyan 在其评论中提到的,将launchMode 设置为“singleInstance”是问题的原因。我将其更改为“singleTask”并且效果很好。
事实上,根据https://developer.android.com/guide/components/activities/tasks-and-back-stack中所说的google doc,

“单一实例”。 与“singleTask”相同,只是系统不会在持有该实例的任务中启动任何其他活动。

从逻辑上讲,使用“singleInstance”,从后台恢复的活动在同一个后台堆栈中没有其他活动,因此,调用finish()将简单地完成活动而不恢复任何活动(第一个活动在背景和另一个单独的任务)

【讨论】:

    【解决方案2】:

    不要保留活动确保未在您设备的开发者设置中启用此选项。

    【讨论】:

    • 未启用
    【解决方案3】:

    在onStop()方法中设置flag知道条件并写onBackPress()条件根据Flag值变化导航到A

    【讨论】:

      【解决方案4】:

      在清单文件中将 Activity A 设为 Activity B 的父 Activity。为你工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-13
        • 2017-09-08
        • 2016-09-28
        • 2019-03-27
        • 2018-05-22
        • 1970-01-01
        • 1970-01-01
        • 2019-04-13
        相关资源
        最近更新 更多