应用程序进入后台后,NSTimer不会停止

时间:2014-01-08 09:07:33

标签: ios nstimer

直到昨天我确定,NSTimer将在应用程序进入后台后停止。我感觉好像经历了一些异常。

我的应用有更新位置和播放音频背景模式。更新位置每隔几秒刷新一次。但它只发生在其中一个应用程序屏幕上。还有NSTimer刷新了一些UI。

我按照这样安排:

[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateTime) userInfo:nil repeats:YES];

还有一种方法,内容与现在无关:

-(void)updateTime
{
//irrelevant content, but the method gets fired even when the app is in background
}

奇怪的是,该方法只能由NSTimer触发,即使在进入后台后,其他地方也会被触发。这里发生了什么?这是正常的行为吗?

3 个答案:

答案 0 :(得分:2)

因为你正在使用带有位置和音频的背景模式,你的应用程序在后台仍然存在。所以你的计时器正在运行。

如果您删除了正在使用的位置和音频的背景模式,请尝试使用定时器。

其正常行为。如果我错了,请纠正我。

答案 1 :(得分:1)

将您的计时器设为公开我的意思是将其添加到.h文件中并在您的应用时访问它。进入后台模式

- (void)applicationDidEnterBackground:(UIApplication *)application

通过上述方法并将您的计时器设置为inValidate ..修复。

如果您想再次启动计时器,则可以通过

访问它
- (void)applicationWillEnterForeground:(UIApplication *)application 

这种方法。在这里,您需要重新创建计时器。

答案 2 :(得分:1)

您可以使用使计时器无效来停止计时器。

[self.timer invalidate]; self.timer = nil;