NSUserDefaultsDidChangeNotification и проблема многозадачности - PullRequest
0 голосов
/ 14 ноября 2010

Я использую приложение «Настройки» для хранения настроек приложения. Я также по умолчанию храню внутренние настройки приложения (которые не отображаются в приложении «Настройки»). Например, я использую пользовательские настройки по умолчанию для хранения последнего индекса панели вкладок, который не отображается в приложении «Настройки».

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

Проблема в том, что когда я обновляю настройки пользователя по умолчанию (для параметров настройки моего внутреннего приложения) из моего приложения, это также запускает NSUserDefaultsDidChangeNotification, и которое мне не нужно.

  1. Можно ли просто прослушать изменение настроек из приложения "Настройки", а не из приложения?
  2. Можно ли прослушать уведомление только тогда, когда приложение находится в фоновом режиме? Я пытался подписаться на уведомление только в applicationWillResignActive (непосредственно перед переходом в фоновый режим) (и это прекрасно работает для регистрации), но я не смог найти способ отменить регистрацию после того, как приложение снова стало активным (applicationDidMakeActive не кажется правильным обратный вызов, так как уведомления доставляются после этого обратного вызова).
  3. Или есть какой-то другой простой способ добиться этого?

1 Ответ

0 голосов
/ 16 ноября 2010

applicationDidMakeActive?Вы должны иметь в виду applicationDidBecomeActive.

Вы можете рассмотреть возможность реализации applicationDidEnterBackground и applicationWillEnterForeground вместо applicationWillResignActive и applicationDidBecomeActive.

Методы "Active" также вызываются, когда приложение запускается и заканчивается, что означает, что вы остановитепрослушивание уведомления, как только оно начинается (вы на самом деле не слушали это уведомление), и если вы реализуете applicationDidBecomeActive, вы начнете прослушивать уведомление, как только ваше приложение завершится (даром).

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