Ios NSTimer在应用程序进入后台后未停止
直到昨天,我还确信,在应用程序进入后台后,NSTimer将停止运行。我有一种感觉,想经历一些不寻常的事情 我的应用程序具有更新位置和播放音频背景模式。更新位置每隔几秒钟刷新一次。但它只出现在一个应用程序屏幕上。还有NSTimer正在刷新一些UI 我是这样安排的:Ios NSTimer在应用程序进入后台后未停止,ios,nstimer,Ios,Nstimer,直到昨天,我还确信,在应用程序进入后台后,NSTimer将停止运行。我有一种感觉,想经历一些不寻常的事情 我的应用程序具有更新位置和播放音频背景模式。更新位置每隔几秒钟刷新一次。但它只出现在一个应用程序屏幕上。还有NSTimer正在刷新一些UI 我是这样安排的: [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateTime) userInfo:nil repeats:YES]; 还有一
[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启动,现在即使ap进入后台也会启动其他方法。这里发生了什么?这是正常的行为吗?因为您使用的是后台模式和位置和音频,所以您的应用程序在后台仍然处于活动状态。因此,您的计时器正在运行 如果您删除了背景模式和您正在使用的位置和音频,然后尝试计时器将不起作用
它的正常行为。如果我错了,请纠正我。因为您正在使用带有位置和音频的后台模式,您的应用程序在后台仍然处于活动状态。因此,您的计时器正在运行 如果您删除了背景模式和您正在使用的位置和音频,然后尝试计时器将不起作用
它的正常行为。如果我错了,请纠正我。将计时器创建为公共计时器,我的意思是将其添加到
.h
文件中,并在应用程序运行时访问它。进入后台模式
- (void)applicationDidEnterBackground:(UIApplication *)application
使用上述方法,并将计时器设置为inValidate
。。它的解决办法
如果你想再次启动计时器,你可以通过
- (void)applicationWillEnterForeground:(UIApplication *)application
这个方法。在这里,您需要重新创建计时器 将计时器创建为公共计时器,我的意思是将其添加到
.h
文件中,并在应用程序运行时访问它。进入后台模式
- (void)applicationDidEnterBackground:(UIApplication *)application
使用上述方法,并将计时器设置为inValidate
。。它的解决办法
如果你想再次启动计时器,你可以通过
- (void)applicationWillEnterForeground:(UIApplication *)application
这个方法。在这里,您需要重新创建计时器 您可以使用使计时器无效来停止计时器 [自动定时器失效];
自拍定时器=零 您可以使用使计时器无效来停止计时器 [自动定时器失效];
自拍定时器=零 计时器所在的位置声明??ViewWill显示在ViewControllers中。计时器所在的位置声明??ViewWill显示在ViewControllers中。。。那我可以用NStimer吗?它不会因此被苹果拒绝吗?这对我来说非常方便,因为这正是我所需要的。我刚刚读了很多东西说这是不可能的……是的,苹果不会拒绝这个,我已经用这个场景创建了应用程序,它在appstore中运行。提示:当应用程序进入后台模式时,它将发出
UIApplicationIdentinterBackgroundNotification
通知。您可以注册一个处理程序来做出适当的反应,也就是说,您可以使计时器无效。但是,只要位置管理器更新了位置,它就只能使NSTimer保持活动状态,对吗?如果位置管理器不在后台执行任何任务,那么如果iOS进入暂停模式,计时器将被终止。因此。。。那我可以用NStimer吗?它不会因此被苹果拒绝吗?这对我来说非常方便,因为这正是我所需要的。我刚刚读了很多东西说这是不可能的……是的,苹果不会拒绝这个,我已经用这个场景创建了应用程序,它在appstore中运行。提示:当应用程序进入后台模式时,它将发出UIApplicationIdentinterBackgroundNotification
通知。您可以注册一个处理程序来做出适当的反应,也就是说,您可以使计时器无效。但是,只要位置管理器更新了位置,它就只能使NSTimer保持活动状态,对吗?如果位置管理器不在后台执行任何任务,那么如果iOS进入暂停模式,计时器将被终止。