Android - Жизненный цикл и сохранение состояния Экземпляра вопросы

Таким образом в рамках моего приложения форма для создания нового пользователя, с соответствующими деталями и информацией о пользователе. Нет никаких проблем там, это, что происходит, когда пользователь оставляет действие, не нажимая подтвердить кнопку.

Вот то, что я хочу сделать:

  1. Если пользователь нажимает кнопку "Назад", попытка сохранить все данные к базе данных и сообщить пользователю.
  2. Если действие прервано (т.е. телефонным вызовом), сохраните все данные во временное местоположение поэтому, когда действие наверху стека снова, ничто, кажется, не изменилось (но данные все еще еще не были сохранены к базе данных).
  3. Если действие уничтожается для большего количества ресурсов, когда в фоновом режиме, сделайте то же как точку 2 выше (т.е. когда действие запускается снова, кажется, что ничто не изменилось).
  4. Если целое приложение запущено снова (путем нажатия на значок снова) и существуют временные данные, хранившие или от точек 2 или от 3 выше, перейдите к, "создают пользователя" действие и данные дисплея как будто измененные мелочи.

Вот то, как я в настоящее время пытаюсь сделать это:

  • Использовать onDestroy() и isFinishing() функции для нахождения, когда действие уничтожается, для отвечания на вопрос 1 выше (чтобы затем попытаться сохранить все данные).
  • Сохраните все данные с onSaveInstanceState в пакет (для отвечания на вопрос 2 выше)
  • Делает пакет, созданный с onSaveInstanceState переживите действие, уничтожаемое для большего количества ресурсов, поэтому когда ее воссозданный предыдущее состояние сможет быть получен (как в точке 3 выше)?
  • Никакая идея, как реализовать точку 4.

Любая справка в широком масштабе ценилась бы.

Удачи!

6
задан The Salt 20 April 2010 в 16:34
поделиться

2 ответа

У меня мало времени, поэтому я не могу дать полный подробный ответ, но вкратце, вот мои предложения.

  • Вместо использования onDestroy () используйте onPause () . Вам гарантированно позвонят; согласно официальной документации по Lifecycles, гарантируется только onPause (). onStop и onDestroy - нет.
  • onSaveInstanceState и onPause похожи.Оба вызываются, когда приложение покидает передний план (т. Е. Попадает в зону потенциальной опасности быть убитым), но разница с oSIS заключается во временном пакете, который он предоставляет. onPause не предоставляет никакого механизма хранения данных, но если вы используете базу данных, то она у вас уже есть. Согласно документации, не существует гарантированного порядка, в котором вызывается первым.
  • Пункт 3) Именно для этого предназначена oSIS.
  • Пункт 4) Вы можете создать «временную строку» в своей базе данных, т.е. сохранить временные данные в строке 1, но при правильном сохранении строка 1 получает погашен. Затем в onCreate () проверьте, есть ли в строке 1 реальные данные или она пуста. (Если ваши столбцы не могут быть пустыми, используйте заранее определенные значения-заполнители, которые никогда не появятся при обычном использовании.)
4
ответ дан 17 December 2019 в 04:44
поделиться

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

1
ответ дан 17 December 2019 в 04:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: