从后台恢复安卓应用堆栈

2022-09-03 08:14:59

假设我从主屏幕启动我的应用程序,浏览一些活动,然后按主页键并在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 使我的应用始终在活动 Main 启动,因此我不知道如何还原最后一个活动。人们告诉我使用共享首选项来保存最后一个活动并将其加载到Launch上,但我认为它不打算以这种方式完成,因为它不是很优雅。


答案 1

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


答案 2

尝试在清单中使用以下选项之一:

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

推荐