Как сохранить задний стек приложения в связке? - PullRequest
6 голосов
/ 27 марта 2012

Я хотел бы сохранить состояние моего приложения, чтобы при повторном открытии из закрытого состояния последний фрагмент был виден и сохранялся задний стек.Я хотел бы сохранить это состояние каждый раз, когда приложение закрывается, а не только при изменении ориентации или когда система убивает приложение, чтобы освободить ресурсы (как в случае использования onSaveInstanceState() / onRestoreInstanceState().

До сих пор я был в состоянии восстановить предыдущий фрагмент и его состояние, как планировалось, сохранив состояние в SharedPreferences и восстановив его позже. Однако это не сохраняет обратный стек фрагмента, поэтому, когда пользователь загружает приложение инажимает кнопку «назад», чтобы переместиться «вверх» в потоке приложения, приложение закрывается, а не поднимается.

На данный момент мне нужно получить доступ к бэк-стеку приложения и сохранить его вкомплект при необходимости, во многом как в системе onSaveInstanceState(). Я прочитал документацию для FragmentManager.saveFragmentInstanceState(), но я не уверен, как использовать это для достижения моей цели. Кто-нибудь может указать мне правильное направление?

Я использую реализацию фрагмента из библиотеки совместимости Android.

1 Ответ

5 голосов
/ 30 марта 2012

Насколько я знаю, система Android не позволит вам получить задний стек задачи, она может только дать вам верхнюю Activity всех запущенных задач.Следовательно, вам нужно будет реализовать собственный механизм поддержки обратного стека Activities.Может помочь реализация LocalActivityManager, в частности, его метод saveInstanceState().Таким образом, вы можете делать что-то подобное и вызывать onSaveInstanceState(Bundle) Activity в своем заднем стеке, когда захотите, и затем сохранять Bundle (в файле, например).Если вы используете Fragments, вам также понадобится сохранить их задний стек.

Возможно, android:alwaysRetainTaskState может помочь вам решить вашу проблему, не вдаваясь в управление задним стеком.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...