【问题标题】:How can I force my Android application to open a new instance of the same activity in singleTop launch mode如何强制我的 Android 应用程序在 singleTop 启动模式下打开相同活动的新实例
【发布时间】:2016-08-09 14:47:10
【问题描述】:

我的 Android 应用有一个名为 ListQuotes 的类,正如其名称所暗示的那样,它显示一个引号列表。它可以在三种情况下打开:

  1. 通过从列表中选择一个人来查看他的报价
  2. 点击工具栏上的“收藏夹”按钮
  3. 通过从菜单中选择一个类别(“关于爱情的名言”、“关于友谊的名言”等...)

每次启动类时,应用都会检查 Intent 以确定它的来源并显示适当的列表。

我将其启动模式设置为 singleTop,这样当我按下后退按钮时应用程序不会尝试重新加载类,并且保留了意图。

但是,如果 ListQuotes 已经是前台活动,我无法从工具栏中加载收藏夹。换句话说,如果我选择一个作者来显示他的引用,然后点击收藏按钮,它不会做任何事情。

有没有办法让 Activity 的启动模式保持在 singleTop 中,但在特定情况下强制应用打开 Activity 的新实例?或者,也许,将启动模式作为标准,但有办法恢复以前的意图?或者我应该为我的最爱单独制作一个活动?

我希望这很清楚,我已经很久没有编程了,所以我可能遗漏了一些东西。提前致谢。

【问题讨论】:

    标签: android listview android-intent


    【解决方案1】:

    删除singleTop 启动模式。这将允许您创建另一个实例。您的声明:

    我将其启动模式设置为 singleTop,这样应用就不会尝试 当我按下后退按钮时重新加载课程并且意图是 保存。

    没有意义,因为按 BACK 不会导致这种奇怪。

    【讨论】:

    • 但是……确实如此。如果我删除 singleTop 启动模式,应用程序会崩溃,因为它找不到意图的额外数据。这是因为其他原因吗?
    • 一定是因为别的原因。请发布代码,说明情况并从logcat中发布堆栈跟踪和异常。
    猜你喜欢
    • 2012-03-10
    • 1970-01-01
    • 2021-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多