2010-03-15 2 views
1

Вопрос заключается в восстановлении сложных данных, связанных с деятельностью, при возврате к действию с помощью кнопки «Назад». В действии A есть ListView, который подключен к ArrayAdapter, служащему своим источником данных - это происходит в onCreate().Android: Как восстановить данные списка при нажатии кнопки «Назад»?

  1. По умолчанию, если я перехожу к действию B и нажимаю «назад», чтобы вернуться к активности A, мой список остается неизменным со всеми данными или я просто получаю визуальную «копию» экрана, но данные потеряно?
  2. Что делать, если задействовано больше действий? Предположим, что активность A запускает активность B, которая начинает активность C, а затем я дважды нажимаю «назад», чтобы добраться до A. Как обеспечить целостность A данных, когда он вернуться на передний план? PrefsManager не работает с интуитивно сложным объектом.

Спасибо, Робы

ответ

1

активность А имеет ListView, который соединен с ArrayAdapter, выступающей в качестве источника данных

Обратите внимание, что ArrayAdapter не является стойким магазин.

По умолчанию, если я перехожу к деятельности В и нажмите «Назад», чтобы вернуться к деятельности А, это мой список останется неизменным со всеми данными или я просто получить визуальную «копию» из экран, но данные теряются?

Это зависит.

Как правило, Activity A никуда не годится. Однако, если пользователь покидает приложение в течение длительного периода времени, Android может уничтожить Activity A, оставив местозаполнитель в стеке действий, чтобы освободить память. Если позднее пользователь нажмет BACK, Android заново создаст Activity A. В этом случае вам нужно висеть на ваших данных, либо используя постоянное хранилище (файл, базу данных и т. Д.), Либо используя onSaveInstanceState() и onRestoreInstanceState().

Дополнительную информацию можно найти в разделе Activity Lifecycle Описание вида деятельности.

+0

Большое спасибо за ваш ответ. – Rob

0

Если вы активно finish() Activity A при запуске активности B, его данные и состояние не все будете присутствовать, когда вы вернетесь к нему, независимо от того, сколько деятельности вы складываете.

+0

Это не обязательно так. Android может выбрать для уничтожения активности, чтобы освободить ОЗУ для другой обработки. – CommonsWare

+0

Благодарим вас за ответ, Дэвид. – Rob

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