Восстановить стек приложений 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();
}