虚假的UIApplicationDidBecomeActiveNotification通知

时间:2013-04-11 07:58:46

标签: ios objective-c

我可以注册UIApplicationDidBecomeActiveNotification并正确接收事件。但有时我收到这些通知 WHILE 该应用仍在运行。我怀疑内存问题触发应用程序辞职/恢复但无法确认是这种情况(我曾同时看到一次内存警告)。在应用程序运行时调用这些方法的原因(没有调用,没有锁定等)?

我正在注册这些通知:

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appDidBecomeActiveNotif:) name:UIApplicationDidBecomeActiveNotification object:nil];
 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appWillResignActiveNotif:) name:UIApplicationWillResignActiveNotification object:nil];

(这在使用dispatch_once的单例构造函数中完成一次)

相应的功能:

-(void)appDidBecomeActiveNotif:(NSNotification*)notif
{
  NSLog(@"appDidBecomeActiveNotif called");
}

-(void)appWillResignActiveNotif:(NSNotification*)notif
{   
  NSLog(@"appWillResignActiveNotif called");
}

以下是一些日志:

2013-04-11 09:28:11.401 App[1499:907] appWillResignActiveNotif
2013-04-11 09:28:13.505 App[1499:907] appDidBecomeActiveNotif

1 个答案:

答案 0 :(得分:1)

这是文档对这些通知的说法:

  

<强> UIApplicationDidBecomeActiveNotification   应用程序变为活动时发布。   应用程序在接收事件时处于活动状态。可以说活跃的应用程序具有焦点。它在启动后获得焦点,在弹出覆盖窗口或设备锁定时失去焦点,并在设备解锁时获得焦点。

     

<强> UIApplicationWillResignActiveNotification   在应用程序不再处于活动状态时失效并失去焦点。   应用程序在接收事件时处于活动状态。可以说活跃的应用程序具有焦点。它在启动后获得焦点,在弹出覆盖窗口或设备锁定时失去焦点,并在设备解锁时获得焦点。

那么,是否有任何叠加窗口弹出窗口,或者您是否锁定了设备或类似的东西?

另外,为什么不使用AppDelegate中的方法来监听这些事件?

修改

问题似乎是MapKit的弹出窗口要求用户使用它的位置。