Реализовать восстановление состояния для уже созданного приложения.

Мне нужен совет о том, как правильно реализовать сохранение и восстановление состояния для уже созданного приложения, имеющего множество контроллеров представления и сложную иерархию.

О чем следует помнить, пытаясь сохранить состояние для приложения, которое уже запущено какое-то время?

ИЗМЕНИТЬ:

Я хочу получить разъяснения или, возможно, получить решение проблемы, с которой я столкнулся в плане восстановления состояния. Я успешно восстанавливаю состояние приложения при запуске. Я восстанавливаю контроллер представления и другие контроллеры представления в иерархии. Теперь, когда я нажимаю другой контроллер представления и последовательность других контроллеров представления в nav. стек, на конкретном контроллере представления по какой-то причине приложение вылетает из-за исключения. Поэтому, когда я снова открываю приложение, оно по-прежнему восстанавливает состояние первого контроллера представления, которое было сохранено при нажатии кнопки «Домой».

В частности, я хочу знать, есть ли способ сбросить информацию о состоянии приложения. когда приложение завершает работу из-за неперехваченного исключения? Я знаю, что состояние будет отброшено, если пользователь вручную принудительно убьет приложение, или восстановление состояния завершится неудачно, или приложение завершится при запуске. Есть ли способ поймать завершение и соответствующим образом настроить состояние приложения? Предложения были бы отличными. Спасибо.


person badhanganesh    schedule 22.12.2016    source источник
comment
Слишком широкий. Приложение есть приложение. Государственная реставрация есть государственная реставрация. Если вы хотите добавить восстановление состояния, добавьте его. Это довольно просто (хотя, конечно, у вас будет много работы, так как вы должны иметь дело с каждым контроллером представления индивидуально). С какой конкретной проблемой вы столкнулись?   -  person matt    schedule 22.12.2016
comment
Насколько я понимаю, восстановление состояния должно выполняться по мере того, как мы продвигаемся по пути создания приложения. Мол, планируйте заранее и приступайте к реализации. Я хочу знать, возникнут ли какие-либо особые трудности при восстановлении после завершения работы приложения. Просто хочу планировать заранее, вместо того, чтобы застревать и тратить слишком много времени.   -  person badhanganesh    schedule 22.12.2016
comment
Я хочу знать, возникнут ли какие-либо особые трудности при восстановлении после завершения работы приложения. Просто хочу планировать заранее, вместо того, чтобы застревать и тратить слишком много времени. Слишком широкий! Как мы можем узнать, возникнут ли у у вас особые трудности? Если у вас есть конкретная проблема, вернитесь и спросите о ней. В нынешнем виде это просто неподходящий вопрос для переполнения стека. У нас нет хрустального шара. Копайте и смотрите, что происходит.   -  person matt    schedule 22.12.2016
comment
Вы хотите получить конкретную рекомендацию на случай, если вы беспокоитесь о том, что застрянете и отнимете слишком много времени? Используйте git и работайте над веткой. Там. Теперь приступайте к работе! :)   -  person matt    schedule 22.12.2016


Ответы (1)


Насколько я понимаю, восстановление состояния должно выполняться по мере того, как мы продвигаемся по пути создания приложения.

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

person matt    schedule 22.12.2016
comment
Нет, мне кажется, это совсем другой вопрос. - person matt; 31.12.2016