2015-07-09 6 views
0

Я хотел бы сохранить состояние своей деятельности, когда оно будет удалено из списка последних приложений, так что, когда пользователь снова запустит мое приложение, он будет в том же состоянии, что и пользователь оставил его.Сохранять состояние активности после прокрутки из списка последних приложений?

Основываясь на моей отладке, похоже, что моя активность onSaveInstanceState() вызывается, когда отображается последний список приложений, но затем, после того как я удалил свое приложение и перезапустил его, я никогда не получаю свой savedInstanceState.

Как я могу сохранить свое состояние в этом взаимодействии?

+0

Вы сохраняете свое состояние в пакете saveinstance? если вы это сделаете, тогда он будет доступен в onCreate –

+0

@PrakashNadar: это точно проблема: мой saveInstanceState не будет возвращен к моей активности при следующем запуске, после того, как он был закрыт из списка Recent Apps. –

+0

Когда приложение будет удалено, сохраненный экземпляр не будет предоставлен, так как действие будет уничтожено действием пользователя. Пользователь ожидает, что приложение «перезагрузится», например, убивает приложение и перезагружается. Поэтому вы должны проектировать приложение или UX для этого ожидания и андроид убеждаются, что произойдет. Сохраненный экземпляр будет предоставлен вам только в том случае, если пользователь переключится между приложением или активностью более высокого уровня, чтобы деятельность закрылась. Если вы действительно хотите восстановить состояние (которое, я думаю, это плохая идея), вы, вероятно, должны сохранить состояние в каком-то постоянном хранилище. –

ответ

3

Как я могу сохранить свое состояние в этом взаимодействии?

Сохраните это состояние в базе данных, SharedPreferences, файл или облако, как вы считаете нужным. У вас больше не будет процесса, поэтому вам нужно сохранить свое состояние где-то настойчивым, а затем узнайте, чтобы перезагрузить его позже.

+0

Я вижу ... и есть ли способ узнать, закрыта ли деятельность из-за недавних прокручиваний приложений, и нормального onSaveInstanceState? –

+0

@DmitryBrant: Ну, 'onSaveInstanceState()' будет вызываться * long *, прежде чем пользователь удалит вашу задачу с обзорного экрана. Если у вас запущен сервис, его следует называть [с помощью 'onTaskRemoved()'] (http://developer.android.com/reference/android/app/Service.html#onTaskRemoved%28android.content.Intent% 29), и ваш процесс может пережить закрытие задачи. Тем не менее, я никогда не пробовал этого, и, учитывая жалобы в этой области, я предполагаю, что он не будет надежным. В противном случае нет, вы не будете уведомлены о том, что ваша задача закрывается. – CommonsWare

+0

Спасибо! Я полагаю, что лучший вопрос: как я могу «знать, чтобы перезагрузить его позже», если я не знаю, почему моя деятельность была закрыта? Должен ли я просто использовать SharedPreferences вместо savedInstanceState? –

 Смежные вопросы

  • Нет связанных вопросов^_^