Android не уничтожает данные на кнопке назад - PullRequest
0 голосов
/ 27 июля 2011

В методе onCreate () я загружаю список уровней. Это хранится в одноэлементной структуре (для этого используется enum). Когда я нажимаю кнопку «Назад» и снова возвращаюсь, список все еще там, и все уровни добавляются снова. Я не понимаю, почему это происходит, поскольку Activity Lifecycle утверждает, что процесс завершается до повторного вызова onCreate ().

Почему это происходит?

изменить, некоторый код:

В отдельном файле:

public enum GameInformation {
   INSTANCE;
       public List<Level> levelSet;

       public void loadLevelSet(Context context) {
       ...
       }
}

В основном виде деятельности:

public void onCreate(Bundle savedInstanceState) {
    GameInformation.INSTANCE.loadLevelSet(this);
}

Ответы [ 2 ]

7 голосов
/ 27 июля 2011

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

Нет, это не так.

Процесс, скорее всего, не прекратится сразу, когда ваша последняя активность будет уничтожена с помощью кнопки НАЗАД. Android будет поддерживать процесс, даже если у вас нет активных компонентов, в случае, если пользователь захочет быстро вернуться в приложение. Позже, когда Android потребуется оперативная память, процесс прекратится.

Вы не должны делать каких-либо предположений относительно того, будут или нет элементы статических данных. Просто лениво инициализируйте их, если они нулевые.

0 голосов
/ 27 июля 2011

Для использования кнопки назад не убивает приложение. Это только устанавливает его в фоновом режиме. Приложение фактически уничтожается системой, когда оно обнаруживается как неактивное, позднее.

Таким образом, ваши уровни просто перезагружаются методом OnCreate(), когда вы возвращаетесь в свое приложение.

...