Восстановить стек приложений 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 делает мое приложение ВСЕГДА начинается с активности Main, поэтому я не знаю, как сделать восстановление последнего действия. Люди сказали мне использовать sharedpreferences, чтобы сохранить последнее действие и загрузить его на Launch, но я не думаю, что он намеревался сделать это, потому что он не очень изящный.

Ответы

Ответ 1

Я думаю, что это единственный способ, потому что то, что происходит при запуске приложения, - это то, что приложение Launcher отправляет намерение "android.intent.action.MAIN". И единственное действие в вашем приложении, которое отвечает на это намерение, - это ваша основная деятельность, таким образом, он активируется. Таким образом, единственное, что вы можете сделать, это сохранить где-то ваш сеанс и начать работу, если уже сохраненный сеанс восстановит приложение до предыдущего состояния.

Ответ 2

Попробуйте использовать один из них в манифесте:

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

Ответ 3

Правильно ли выполняются функции onResume() и onPause?

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

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