Жизненный цикл простого приложения для Android - PullRequest
2 голосов
/ 13 июня 2010

У меня есть простое приложение с 3 действиями:

  • первый содержит окно поиска, которое вызывает веб-сервис и показывает результаты (рестораны) ниже в виде списка
  • при нажатии на ресторан запускается другое действие с описанием ресторана и кнопкой "показать карту"
  • когда нажата кнопка "показать карту", угадайте что, карта показана в третьем упражнении.

Все данные загружаются в первом действии веб-службой (описания ресторанов и координаты), а данные, требуемые для каждого занятия, передаются в связке с использованием intent.putExtra.

Теперь все, кажется, работает гладко при нажатии на back button (например, нажатие на кнопку "Назад" на карте возобновляет действие restaurant description со всеми данными, правильно установленными), пока я ничего не сделал с жизненным циклом еще.

Почему? Все переменные сохраняются автоматически? В любом случае я должен использовать onSaveInstanceState() и onRestoreInstanceState()?

Спасибо

Июль

Ответы [ 2 ]

0 голосов
/ 12 декабря 2012

Когда ваша активность остановлена, объект Activity сохраняется в памяти и вызывается при возобновлении активности. Вам не нужно повторно инициализировать компоненты, которые были созданы во время любого из методов обратного вызова, приводящих к состоянию Возобновлено. Система также отслеживает текущее состояние каждого представления в макете, поэтому, если пользователь ввел текст в виджет EditText, это содержимое сохраняется, поэтому вам не нужно его сохранять и восстанавливать.

Даже если система уничтожает вашу активность, когда она остановлена, она все равно сохраняет состояние объектов просмотра (например, текста в EditText) в Bundle (блок пар ключ-значение) и восстанавливает их, если пользователь перемещается вернуться к тому же экземпляру действия).

http://developer.android.com/training/basics/activity-lifecycle/stopping.html

По умолчанию система использует состояние экземпляра Bundle для сохранения информации о каждом объекте View в макете вашей деятельности (например, текстовое значение, введенное в объект EditText). Таким образом, если ваш экземпляр активности будет уничтожен и воссоздан, состояние макета будет восстановлено до его предыдущего состояния без кода, который вам требуется. Однако ваша деятельность может содержать больше информации о состоянии, которую вы хотите восстановить, например, переменные-члены, которые отслеживают прогресс пользователя в операции.

Примечание. Чтобы система Android могла восстановить состояние представлений в вашей активности, каждое представление должно иметь уникальный идентификатор, предоставленный атрибутом android: id.

Чтобы сохранить дополнительные данные о состоянии активности, необходимо переопределить метод обратного вызова onSaveInstanceState ().

http://developer.android.com/training/basics/activity-lifecycle/recreating.html

0 голосов
/ 14 июня 2010

Когда новое действие B начинается поверх другого действия A, действие A не будет уничтожено по умолчанию, оно станет остановленным , и после этого вы просто возобновите его. Если системе нужны ресурсы, она может уничтожить остановленную деятельность. Здесь есть хороший график , который действительно объясняет жизненные циклы компонентов.

...