Изменение языка устройства, когда приложение работает в фоновом режиме

#iphone #objective-c #ios #cocoa-touch #nslocalizedstring

#iPhone #objective-c #iOS #cocoa-touch #nslocalizedstring

Вопрос:

Я запускаю приложение iPod touch, а затем перехожу в фоновый режим и меняю язык устройства в приложении «Настройки» и пытаюсь вывести это приложение на передний план. Мое приложение перезапускается, и я не попадаю на экран, на котором я оставил приложение, когда перешел в фоновый режим.

Это потому, что приложение настроек отправляет сигнал завершения при изменении языка? Является ли это желаемым поведением?

Ответ №1:

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

Ваш делегат приложения должен реализовать applicationWillTerminate: (или вы можете наблюдать UIApplicationWillTerminateNotification везде, где это удобно). Когда вы получите это сообщение, вам следует сохранить достаточную информацию, чтобы вернуться туда, где вы были при перезагрузке. Насколько это возможно, вы должны показать пользователю, что вы не завершали работу. Обычно проще всего сохранить состояние в NSUserDefaults , но вы можете использовать любой механизм, который вам нравится.

Обработка перезапуска приложения — это одна из тех вещей, которая отличает отличные приложения для iOS от «достаточно хороших».

Комментарии:

1. Нет. Даже если вы не получите ответный вызов для Applicationwill Terminate.

2. Извините, привычки iPhone3. Вы должны делать это в applicationDidEnterBackground: для iOS 4.