нет необходимости сохранять состояние для сценария поддержки многозадачности IOS 4.0? - PullRequest
1 голос
/ 16 марта 2011

Я немного запутался, когда нужно сохранить состояние для приложения iPhone.В частности, для сценария, в котором версия Iphone IOS поддерживает многозадачность, и когда вы возвращаетесь к ней, она оказывается в том же состоянии (в любом случае, для моего простого приложения).

Вопрос - Можете ли вы уточнить, как «необходимость сохранения состояния для приложения iPhone» и поддержка многозадачности играют вместе.

Надеемся, что ответ поможет уточнить такие аспекты, как:

  1. Для сценария поддержки многозадачности (когда пользователь явно не закрывает приложение), есть ли необходимость вообще сохранять состояние?Или IOS делает это для вас (что, кажется, делает для моего простого приложения).

  2. Если ответ на 1 - ДА, то в какой момент вам действительно нужнотогда сохраните состояние?

  3. Если ответом на 1 является НЕТ, то какие именно данные / состояние вы теряете по сравнению с не-потерей, когда IOS поддерживает работу вашего приложения в фоновом режиме?

спасибо

Ответы [ 3 ]

2 голосов
/ 16 марта 2011

Обычно при многозадачности приложение продолжает работать, и нет необходимости явно сохранять состояние приложения.Однако, если у телефона недостаточно памяти, он вполне может решить сбросить ваше приложение, пока оно находится в фоновом режиме.

Для телефонов, которые не имеют фонового режима (например, 3G), вам всегда нужносохранить состояние.

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

Поскольку «какое состояние» необходимо сохранить, это действительно зависит от вашего конкретного приложения.Возможно выбранная вкладка или навигация?Многое зависит от ожидания пользователя не потерять работу.

2 голосов
/ 16 марта 2011

1A.Да.Потому что ...

1B.Вы не знаетеОС обычно сохраняет состояние на новых устройствах, но это не гарантируется и не всегда происходит.На старых устройствах ОС не будет сохранять состояние.

2A.Даже если ответ на 1Б.Если ДА, ОС все еще может удалить состояние вашего приложения для экономии памяти.Таким образом, вам все еще нужно сохранить любое состояние, которое вы не хотите потерять, возможно, после того, как ваше приложение приостановлено.

3A.Ваше приложение может потерять счет времени (от тиков NSTimer и т. Д.), Если оно не проверяет часы при возобновлении.

2 голосов
/ 16 марта 2011

Все, что вам нужно сделать для поддержки многозадачности, это скомпилировать против 4.0 или выше.

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

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

...