NSUserDefaultsDidChangeNotification和多任务问题

时间:2010-11-14 06:44:56

标签: ios4

我正在使用“设置”应用来存储应用设置。我还用户默认存储内部应用程序设置(未在“设置”应用程序中公开)。例如,我使用用户默认值来存储最后一个标签栏索引,该索引未在“设置”应用程序中公开。

我正在订阅NSUserDefaultsDidChangeNotification,以便在我的应用处于后台时收听设置中的任何更改,并且工作正常。

问题在于,当我从我的应用程序中更新用户默认值(对于我的内部应用程序设置参数)时,这也会触发NSUserDefaultsDidChangeNotification,这是我不想要的。

  1. 是否可以只从设置应用中收听设置中的更改,而不是从应用程序中收听?
  2. 是否可以仅在应用处于后台时收听通知?我尝试仅在applicationWillResignActive中订阅通知(就在进入后台之前)(并且这适用于注册),但是一旦应用程序再次成为活动状态,我找不到取消注册的方法(applicationDidMakeActive似乎不正确回调,因为在此回调之后发送了通知。)
  3. 还有其他一些简单的方法来实现这个目标吗?

1 个答案:

答案 0 :(得分:0)

applicationDidMakeActive?你必须指applicationDidBecomeActive。

您可以考虑实现applicationDidEnterBackground和applicationWillEnterForeground,而不是applicationWillResignActive和applicationDidBecomeActive。

当应用程序开始和结束时,也会调用“活动”方法,这意味着一旦启动(您实际上没有收听此通知),您将停止收听通知,如果您实现applicationDidBecomeActive,您将开始收听一旦您的申请结束(无所事事),通知即可。