Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios NSTimer在应用程序进入后台后未停止_Ios_Nstimer - Fatal编程技术网

Ios NSTimer在应用程序进入后台后未停止

Ios NSTimer在应用程序进入后台后未停止,ios,nstimer,Ios,Nstimer,直到昨天,我还确信,在应用程序进入后台后,NSTimer将停止运行。我有一种感觉,想经历一些不寻常的事情 我的应用程序具有更新位置和播放音频背景模式。更新位置每隔几秒钟刷新一次。但它只出现在一个应用程序屏幕上。还有NSTimer正在刷新一些UI 我是这样安排的: [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateTime) userInfo:nil repeats:YES]; 还有一

直到昨天,我还确信,在应用程序进入后台后,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启动,现在即使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进入暂停模式,计时器将被终止。