7

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

运行我的应用程序后,从 Activity A 转到 B 并按 Home 按钮,当我从应用程序菜单或从 Market 应用程序重新启动它时(不是长按 Home 按钮),它从A Activity 并且不保存它的最后一个 Activity B.

我绝对知道可以从上一个 Activity 重新启动应用程序(市场上的一些应用程序确实支持它),我认为这可以由 Manifest 参数确定,但我不知道是哪一个。

有谁知道如何实现它,以便我的应用程序可以从其最后一个 Activity B 重新启动?

谢谢阿亚尼尔

4

3 回答 3

5

尽管我知道这是一个老问题,但我一直在努力解决这个问题,并且找不到关于 SO 的答案。所以,这是我(非常新手)的答案:

不,我认为通过弄乱清单来做到这一点是不可能的——您只能从主屏幕启动每个应用程序的一个固定活动。但是,您可以做的是从该起点启动您想要的任何活动,而 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);
于 2011-02-15T15:23:41.180 回答
1

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

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

Android:从HOME重启后保留任务的活动堆栈

于 2010-01-23T12:01:34.500 回答
0

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

于 2010-01-27T03:08:30.183 回答