Сохранение состояния активности в onPause - PullRequest
17 голосов
/ 07 декабря 2011

У меня есть переменная, которую я успешно сохранил и восстановил с помощью onSaveInstanceState

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState); // the UI component values are saved here.
    outState.putDouble("VALUE", liter);
    Toast.makeText(this, "Activity state saved", Toast.LENGTH_LONG).show();
}

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

Ответы [ 3 ]

36 голосов
/ 07 декабря 2011

Как вы обнаружили, onSaveInstanceState полезен только в ситуациях, когда вам нужно воссоздать тот же так называемый "экземпляр" Действия после того, как он был уничтожен ОС, обычно потому, что он находится слишком далеко сзади.стек, чтобы остаться в живых под давлением памяти.

Сохранение ваших данных в onPause - это действительно путь к постоянству, который длится за пределами одного выполнения вашей Деятельности.Чтобы это работало, у вас есть несколько вариантов, в том числе:

  • Общие настройки
  • Файлы
  • Базы данных
  • Поставщики контента

Я предлагаю прочитать эту документацию, чтобы узнать больше о каждой из этих опций:

http://developer.android.com/guide/topics/data/data-storage.html

4 голосов
/ 18 ноября 2013

Вы можете просто присвоить свою переменную foo члену класса mFoo в onPause при условии, что вы также сохраните mFoo в связке состояний в onSaveInstanceState. То же самое относится и к сценарию восстановления.

0 голосов
/ 03 ноября 2014

Если вы решите сохранить состояние «Активность» в «Общие настройки», вы можете воспользоваться компонентом GNStateManager библиотеки, которую я написал, чтобы упростить сохранение и получение необходимых полей действия, помеченного как моя аннотация @GNState. Это очень просто в использовании. Также могут быть сохранены другие состояния объекта синглтона. Смотрите здесь для получения информации о настройке и использовании: https://github.com/noxiouswinter/gnlib_android/wiki/gnstatemanager

...