перезапуск приложения начинается там, где я его закрыл - не с самого начала - PullRequest
1 голос
/ 08 декабря 2011

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

Но по некоторым причинам мое приложение сохраняет некоторыепеременные из предыдущего запуска и не перезапускаются правильно.

Это происходит только при перезапуске на самом устройстве.Перезапуск с Eclipse запускает приложение правильно с самого начала инициализации всех переменных.

Почему это так?Не верно ли мое предположение, что при выходе из приложения все классы и переменные будут уничтожены?

Большое спасибо

1 Ответ

1 голос
/ 08 декабря 2011

Ну, это сложнее, чем просто.

Прежде всего, вы не увидите нормальный жизненный цикл приложения Android, когда запускаете его в отладчике.Убийство и перезапуск приложения действительно начнут вас с самого начала.Тем не менее, нормальный жизненный цикл Android-приложений не очень понятен для разработчиков.Обычно, если пользователь «возвращается» из приложения на домашний экран Android, можно ожидать, что ваше приложение будет убито, когда не будет активных действий.Это не вариант.ОС Android будет поддерживать ваше приложение живым в памяти до тех пор, пока давление памяти не заставит его выпустить приложение.Это сделано потому, что если пользователь снова «откроет» приложение, оно запустится намного, намного быстрее.Я укажу, что метод onDestroy () вашего приложения на самом деле никогда не будет уничтожен, потому что это тоже удивляет некоторых разработчиков.

Если, однако, у вас все еще есть активные действия, но они находятся в фоновом режиме, иAndroid нужна память, она убьет ваши действия, но перед этим вызовет onSaveInstanceState.Это даст вашей активности возможность сохранить свое состояние в Bundle, и фактически большая часть этого будет сделана для вас реализацией по умолчанию.На этом этапе, если все ваши действия будут уничтожены, ваше приложение будет убито, но Android все равно сохранит сохраненное состояние и, с точки зрения пользователя, приложение все еще живо (оно все равно будет отображаться в спискеактивных приложений).Когда пользователь вернется в приложение, Android заново создаст самый верхний Activity (будет вызываться onCreate, но с Bundle, который содержит содержимое, сохраненное с помощью onSaveInstanceState) и отобразит его для пользователя.Когда пользователь снова вытолкнет активность из стека, приведенные ниже будут перестроены и т. Д. И т. Д.

...