2016-04-25 2 views
4

Короткий вопрос: Можно ли сохранить данные с помощью метода onSaveInstanceState(), а затем вызвать finish() на активность и при следующем запуске деятельности, чтобы получить данные обратно в savedInstanceState? Или finish() активности означает, что данные ушли?onSaveInstanceState и отделка()

Если первый ответ верен, у меня есть некоторые проблемы в моей реализации, потому что я получаю null в onCreate(), хотя данные были сохранены. Если второй ответ правильный, я должен заново продумать, как я подключаю свою деятельность вместе: о)

ответ

5

Можно ли сохранить данные с помощью метода onSaveInstanceState(), а затем вызвать финиш() на активность и на следующий начало действия, чтобы вернуть данные в savedInstanceState?

No.

Или() из деятельности означает, что данные ушли закончить?

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

  • изменения конфигурации (например, поворот экрана)
  • окончания процесса (с пользователем, возвращающимся к вашему приложению достаточно быстро)

Если finish() вызываются по другим причинам — вы призывающие его непосредственно, пока пользователь не нажмет НАЗАД и т.д. — то сохраненное состояние экземпляра больше не нужно и может быть отброшена.

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

+0

Благодарим за разъяснение – Ellrohir

+0

Обратите внимание, что если вы задаетесь вопросом только о вращении экрана без каких-либо диалогов, просто редактируйте текстовые поля - вам не нужно реализовывать onSaveInstanceState - есть только один - все ваши тексты редактирования должны иметь ID значение в xml. – Robert

+0

теперь моя проблема решить: у меня есть основное действие и три других действия, которые вызывают, нажимая кнопки в главном. Когда я перехожу к действиям, может быть выполнено действие, и мне нужно быть в состоянии сообщить основную деятельность о результате. Я знаю, как использовать Intent для запуска активности и передачи некоторых данных при запуске приложения. Но когда я начинаю новую деятельность, старые остаются и беспорядок. Вот почему используется finish() для их прекращения. Есть ли лучший способ справиться с этим? – Ellrohir

Смежные вопросы