从上一个Activity中运行Android应用程序

7
我有一个包含多个Activity的应用程序。 我的A Activity具有Manifest Intent筛选器参数:action.MAIN和category.LAUNCHER。在它被加载后,我调用Activity B并finish() A,因为我不再使用它。
当我运行我的应用程序,从Activity A到B并按Home按钮时,当我从应用程序菜单或Market应用程序重新启动它(而不是通过长按Home按钮),它从A Activity开始,并没有保存上次的Activity B。
我确实知道可以从上次的Activity重新启动应用程序(市场中的一些应用程序支持它),我认为这可以通过清单参数确定,但我不知道哪个。
有人知道如何实现它,使得我的应用程序可以从上次的Activity B重新启动吗?
谢谢 ayanir

你搞清楚了吗?如果是的话,请与我们分享... - AlikElzin-kilaka
3个回答

5

虽然我知道这是一个老问题,但我一直在为这个问题苦苦挣扎,却找不到答案。所以,这是我的(非常新手)答案:

不,我不认为通过修改清单文件来实现这一点是可能的 - 每个应用程序只能从主屏幕启动一个固定活动。但是,您可以从该起始点启动任何活动,并且Android可以快速地执行它,以至于您永远看不到第一个活动。

虽然这感觉很像黑客行为,但我在起始活动的 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);

1

最近出现了许多非常相似的问题。首先搜索网站以确保不会问重复的问题是一个好主意。

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

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


请注意,这个问题已经在Eclipse的ADT插件0.9.6版本中得到了修复。 - Christopher Orr

0

在开发Android应用程序时,有几个要考虑的因素。其中一个重要的因素是应用程序生命周期,如果您还没有了解过,请参考此视频。应用程序可以在任何时间点被杀死和重置,您需要保存应用程序的状态,以便随时恢复它。如果您从启动器打开应用程序,您将始终进入启动应用程序的Activity,如果您想跳转到下一个Activity,您需要存储该信息,然后在代码中跳转到该Activity。
此外,请查看有关保存持久状态的文档。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接