Android Home按钮无法恢复上次活动

时间:2010-09-23 17:41:25

标签: android

我正在尝试解决类似于此处所做的问题(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中自行完成,以避免出现后退按钮问题。

3 个答案:

答案 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之后重新打开时添加了新的(具有打开活动)。我希望这是相当清晰的,即使我(显然)发现很难解释。

修改:我们更好地描述了herehere