从后台恢复Android应用程序堆栈

时间:2010-01-14 00:53:25

标签: java android

让我们说我从主屏幕启动我的应用程序,浏览一些活动,然后我按下主页键并在Gmail应用程序中执行其他操作。

检查完邮件后,我再次按主页键退出Gmail应用程序,然后再次点击主屏幕上的应用程序图标返回。

当我回到我的应用程序时,我希望它返回到我所在的最后一个活动,而不是开始一个全新的会话。我一直试图弄清楚这一点。

我的第一项活动的清单如下:

 <activity android:name=".Main"
              android:label="@string/app_name"
              android:screenOrientation="portrait"
              android:alwaysRetainTaskState="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

类别属性LAUNCHER使我的应用总是从活动主页开始,所以我不知道如何恢复最后一个活动。人们告诉我使用共享偏好保存最后一个活动并将其加载到Launch上,但我不认为这样做是因为它不是很优雅。

3 个答案:

答案 0 :(得分:1)

我认为这是唯一的方法,因为当您启动应用程序时会发生的事情是Launcher应用程序发送意图“android.intent.action.MAIN”而您的应用程序中唯一响应此意图的活动是您的主要活动,因此它被激活。因此,您唯一可以做的就是保存您的会话和活动启动,如果已经保存的会话将应用程序恢复到以前的状态。

答案 1 :(得分:0)

尝试在清单中使用其中一个:

 <activity android:launchMode=["multiple" | "singleTop" |
                              "singleTask" | "singleInstance"] ...

答案 2 :(得分:0)

onResume()和onPause是否正确实现?

protected void onResume(){
    super.onResume();
}

protected void onPause() {
    super.onPause();
}