我正在尝试解决类似于此处所做的问题(link text)
除了在我的情况下,活动A,启动活动B,启动活动C,当用户在按下主页按钮后恢复应用程序时 - 我想要显示最后一个活动的C。相反,我正在回到A.
另外在旁注上我发现即使退出应用程序,如果我按住主页按钮,我的应用程序仍然会列为活动应用程序,即使在LogCat中我可以看到它已退出OK。 / p>
另外,如果重要的话,我最近添加android:launchMode ="singleTask"
以使一些通知逻辑正常工作。我之前看到了Home按钮行为。
我非常感谢您的任何想法。
[编辑 - 添加一些代码段]
<activity
android:name =".connection.ActivityA"
android:label ="@string/app_name"
android:configChanges="orientation|keyboardHidden"
android:theme ="@android:style/Theme.NoTitleBar"
android:launchMode ="singleTask"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name ="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name =".screens.AvtivityB"
android:label ="@string/app_name"
android:configChanges="orientation|keyboardHidden"
android:theme ="@android:style/Theme.NoTitleBar"
android:launchMode ="singleTask"
android:screenOrientation="portrait" >
</activity>
<activity android:name =".screens.ActivityC"
android:label ="@string/app_name"
android:configChanges="orientation|keyboardHidden"
android:theme ="@android:style/Theme.NoTitleBar"
android:screenOrientation="portrait" >
</activity>
接下来是我开始每个活动的方式: 在活动A:
private void startActivityB() { Intent activityBIntent = new Intent(this,ActivityB.class); this.startActivityForResult(activityBIntent,ACTIVITYB_TAG); }
活动B实际上有几个它从中选择的活动(它有一个Intents列表)根据它接收的输入显示,但是以Activty A启动的方式启动它们。一旦显示第一个Activity,用户滑动导航到左侧或右侧屏幕的屏幕。当用户向左或向右滑动时,当前活动将info放入其返回的Intent中,Activity B使用该Intent来显示下一个Activity。此外,由于用户控件之外的逻辑可能会提示显示的屏幕发生变化,因此每个Activty调用都会在onStop中自行完成,以避免出现后退按钮问题。
答案 0 :(得分:2)
当您长按home时,它会显示最近活动的应用程序列表,而不是当前正在运行的应用程序。因此,您仍然应该在列表中看到您的应用,即使它已关闭。
正如docs注意:
其他模式 - singleTask和 singleInstance - 不合适 对于大多数应用,因为他们 导致交互模型 可能对用户不熟悉 与大多数其他人截然不同 应用
我想你使用singleTask会影响历史堆栈,从而阻止记住Activity C.如果从活动C中删除它,它是否解决了问题?
否则,我会在活动C的onPause / onDestroy等上查看你在做什么。你在做什么会导致它完成或关闭吗?
答案 1 :(得分:0)
仅在从Eclipse运行时才会出现此行为吗?
检查“运行配置”。有一个“启动动作”,可以设置为“什么都不做”。
马特
答案 2 :(得分:0)
我不确定这是发生在你身上的事情,但下面的答案解决了我的问题,我想要和你一样的行为 - 也就是说,在推回家之后重新开启时进行同样的活动(虽然在我的情况下,我确实想要第一个活动,而不是一个新活动:
Save activity state in android when home button pressed
现在我意识到你想要保持活动堆栈的完整性,而不是像我一样去参加第一个活动。但是如果它是同样的问题,那么它不是来自活动堆栈被拆除的事实,而是因为在首次安装时按下home之后重新打开时添加了新的(具有打开活动)。我希望这是相当清晰的,即使我(显然)发现很难解释。