Android-приложение - сохранение состояния

1

У меня есть собственный объект класса приложения, в котором хранятся все данные приложения. В Application.onCreate я создаю все объекты приложений и считываю данные из SharedPreferences. Моя проблема заключается в том, что когда приложение переходит в фоновый режим, оно может быть убито. После того, как я выберу приложение из пусковой установки, будет восстановлен стек активности (запускается последнее действие, а не действие Launcher). Проблема заключается в том, что Application.onCreate не вызывается, поэтому все объекты приложений не загружаются, и я сталкиваюсь с проблемами. Каков наилучший способ хранения/восстановления данных/объектов приложения. Я знаю, что это можно сделать в Activity.onCreate/onDestroy, но у меня есть много действий в моем приложении и не знаю, что на них будет сверху, когда приложение будет убито/перезапущено.

Теги:
android-activity

2 ответа

0
Лучший ответ

Когда вы запускаете свое приложение и оно начинается с последнего действия, а не из активности запуска, это означает, что ваше приложение не было убито. Поэтому в этом случае ваше приложение onCreate не будет вызываться, потому что оно все еще живое.

Метод приложения onCreate вызывается один раз в течение жизненного цикла приложения. Поэтому, пока ваш класс приложения не будет активным, вы должны иметь доступ к всем данным вашего приложения.

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

EDIT: если ваше приложение является живым, пока ваше приложение имеет ссылку на данные, они не могут быть удалены gc. Итак, в вашем случае, возможно, вы забыли обновить данные правильно. Поэтому сериализация не поможет вам в этом случае, иначе у вас появятся ошибки.

1

Сериализуйте свой ApplicationObject и сохраните его в Файле (простое) или Хранилище объектов (сложное)

или вы можете реализовать функциональность Serialize/Deserialize

Где, Serialize будет преобразовывать свойства объекта в JSON и хранить

DeSerialize загрузит JSON и заполнит объект и вернется.

  • 0
    Как рекомендует TechExchange, для сохранения состояния объектов необходимо реализовать интерфейс Serialize.
  • 0
    Но когда хранить состояние объекта Application? Когда делать это?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню