Android APP 按下Home键后回到桌面,再点击APP图标回到之前浏览的界面的方法

发布于 2020-07-05  142 次阅读


说明

当我们浏览某个界面,按下Home键将使APP进入后台,如果再通过APP图标打开应用的话,会发现并没有进入到我们之前浏览的界面.

<activity android:name=".login.activity.WelcomeActivity"
                  android:icon="@drawable/ic_camera"
                  android:launchMode="standard">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>

回忆AndroidManifest.xml中的配置,一个APP是可以配置多个入口的,使其生成多个图标的.
也就是生成的APP图标其实是与指定的Activity绑定在一起的,点击图标就是打开指定的Activity.所以这个图标与其说是APP的图标,不如说是启动页的图标.

当应用进入后台的时候,任务栈就会根据配置的回收策略对Activity进行资源回收.默认情况下,Activity会被回收,但是仍然会占据着栈的位置(所谓的'记录').

利用'记录'的这个特点,就可以让我们的APP回到之前浏览的界面.

做法

  1. 确保启动页和被'记录'下的Activity处于同一个栈
android:launchMode="standard"
  1. 在启动页中判断自身处于栈的什么位置,如果不是栈底,说明后台'记录'有Activity,关闭启动页即可回到栈里的上一个界面
if (!isTaskRoot()) {
    finish();
    return;
}

优化

设置开启持久化(防止APP挂后台被回收)

<application
        android:persistent="true"">
</application>

做一只特立独行的猪