【问题标题】:Android Run application from last ActivityAndroid 从上一个 Activity 运行应用程序
【发布时间】:2010-01-23 09:28:18
【问题描述】:

我有一个包含多个活动的应用程序。 我的 A Activity 具有 Manifest Intent 过滤器参数:action.MAIN 和 category.LAUNCHER。加载后,我调用 Activity B 并 finish() A 因为我不再使用它了。

运行我的应用程序后,从 Activity A 转到 B 并按 Home 按钮,当我从应用程序菜单或从 例如市场应用程序。(不是长按主页按钮),它会启动 从 A Activity 中提取,并且不保存其最后一个 Activity B。

我绝对知道这可以重新启动应用程序 从它的最后一个活动(来自市场的一些应用程序确实支持 它),我认为这可以通过清单参数来确定 但我不知道是哪一个。

有谁知道如何实现它,以便我的应用程序可以重新启动 从上一个活动 B 开始?

谢谢 阿亚尼尔

【问题讨论】:

  • 你搞清楚了吗?如果是这样,请与我们分享...

标签: android android-manifest


【解决方案1】:

虽然我知道这是一个老问题,但我一直在努力解决这个问题,但在 SO 上找不到答案。所以,这是我(非常新手)的答案:

不,我不认为通过弄乱清单来做到这一点 - 每个应用程序只能从主屏幕启动一个固定活动。不过,您可以做的是从该起点启动您想要的任何 Activity,而 Android 可以足够快地做到这一点,以至于您永远看不到第一个。

虽然这感觉很像 hack,但我在启动活动的 onResume() 方法中实现了这个路由,并使用 sharedPreferences 来跟踪要启动的活动:

    final Class<? extends Activity> activityClass;
    SharedPreferences prefs = getSharedPreferences("sharedPrefs", MODE_PRIVATE);
    int activityID = prefs.getInt("whichActivity", -1);
    if (activityID  == Constants.ACTIVITY_ID_MAINSCREEN) {
        activityClass = MainScreen.class;
    } else {
        activityClass = null; return;
    }
    Intent newActivity = new Intent(this, activityClass);
    this.startActivity(newActivity);

【讨论】:

    【解决方案2】:

    最近有很多非常相似的问题。最好先搜索网站以确保不会提出重复的问题。

    例如,下面链接的问题表明这种行为的发生是因为开发人员使用 Eclipse 调试器启动他们的应用程序。另一个人遇到了这个问题,因为他们是直接从 Eclipse 启动应用程序,而不是通过手动按下启动器图标来干净地启动。

    Android: keep task's activity stack after restart from HOME

    【讨论】:

    • 请注意,此行为已在 Eclipse 的 ADT 插件 0.9.6 版本中修复。
    【解决方案3】:

    因此,在 Android 中开发应用程序时需要考虑一些事项。最重要的事情之一是应用程序生命周期,如果您还没有,那么我建议您使用 video。发生的情况是应用程序可以在任何时间点被终止和重置,您需要保存应用程序的状态以便您可以随时恢复它。如果您从启动器打开您的应用程序,您将始终进入启动应用程序的 Activity,如果您想跳到下一个 Activity,您需要存储该信息,然后跳转到代码中的 Activity。
    另请查看有关SavingPersistentState的文档

    【讨论】:

      猜你喜欢
      • 2011-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多