У меня есть приложение, в котором я программно создаю вид EditText
. Я назначить идентификатор этой точки зрения, используя setId()
Сохранение состояния объекта при нажатии пользователем кнопки «Назад»
myEditText.setId(100);
так что Android автоматически сохраняет состояние этого объекта во время приостановки/остановки приложения (как мне посоветовали сделать here). Он работает в этих случаях:
- (1) Когда я оставить приложение с помощью кнопки «Home»: если я потом вернуться в приложение, состояние объекта (отображается текст) восстанавливается, как и ожидалось ,
- (2) При изменении ориентации экрана (в котором Android автоматически уничтожает активность и восстанавливает ее через
Bundle
). Состояние объекта также сохраняется.
Однако не работает в этом случае:
- (3) Когда я оставить приложение с помощью кнопки «Назад»: если я потом вернуться в приложение, то
EditText
объект пуст.
Любое объяснение, почему это происходит? Отличает ли Android отличное отключение приложения с «Главная» и «Назад»? Согласно documentation, состояние объекта должно быть автоматически сохранено через Bundle
, , даже когда действие уничтожается. И это явно происходит в случае (2). Но не в случае (3)!
Если это нормальное поведение, как я могу автоматически сохранить и восстановить состояние приложения, когда пользователь нажимает «Назад»? Я знаю, что я мог бы использовать SharedPreferences для этого, но я предпочел бы, чтобы Android делал это автоматически, как это происходит в случаях (1) и (2).
Это происходит, по крайней мере, в Android 4.0 и 4.2 (я еще не тестировал другие).
Использовать общие настройки в хранилище и восстановить его. После того, как вы нажмете кнопку «Назад», текущая активность будет удалена из предыдущего стека и будет уничтожена. Предыдущее действие в стеке занимает фокус – Raghunandan
@Raghunandan Спасибо, но, как я сказал в вопросе, я хотел бы сделать это без SharedPreferences. В идеале мне бы хотелось, чтобы такое же поведение, как и с кнопкой «Домой»: Android автоматически сохраняет и восстанавливает –
метод onDestroy() также вызывается после метода onPause() и onStop(), когда вы перемещаетесь от приложения с помощью кнопки «Назад». Дополнительную информацию см. В жизненном цикле деятельности. –