Сохранение переменной при уничтожении приложения не работает
Я хочу сохранить некоторые переменные после выхода из активности, которые были установлены в течение срока действия моей активности на Android, и показать их при повторном запуске активности, но мне, кажется, не удается заставить все работать. Вот как я это делаю:
Я создал целочисленную переменную "test":
public class MainActivity extends Activity {
int test = 1;
Затем я пишу метод для изменения значения этой переменной, нажав кнопку:
public void changeValueTest(View view) {
this.test = 2;
}
Затем я использую метод onSaveInstanceState() для сохранения измененного значения:
static final String TEST = "test variable";
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
savedInstanceState.putInt(TEST, this.test);
super.onSaveInstanceState(savedInstanceState);
}
Затем в методе onCreate() я поместил этот код, чтобы получить и показать измененное значение "test":
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState != null) {
this.test = savedInstanceState.getInt(TEST);
TextView textView1 = (TextView)findViewById(R.id.textView1);
textView1.setText("Current test value is: " + test);
}
}
Таким образом, я открываю приложение, нажимаю кнопку, чтобы изменить значение "test" с 1 на 2, затем выхожу из приложения, ожидаю, пока оно не будет должным образом удалено из памяти (когда Application Manager не показывает его в окне "Кэшированные процессы"), снова запустите приложение, и представление textView1 показывает 1 вместо 2. Что я делаю не так? Пожалуйста помоги! Спасибо!
2 ответа
Что я делаю неправильно?
Ничего такого. Состояние экземпляра не охватывает сценарий, который вы описываете.
В основном, состояние экземпляра используется в изменениях конфигурации (например, поворот экрана). Во-вторых, состояние экземпляра используется, если пользователь покидает ваше приложение с помощью других средств, кроме "выхода" (под которым я предполагаю, что вы имеете в виду НАЗАД), и возвращается к вам с помощью средств, подобных списку недавних задач.
Как описано в Developer.android, сохраненный экземпляр сохраняет только ваше состояние активности, он не будет сохранять вашу переменную, как вы хотели, я бы предложил вам использовать SharedPreference.