objective-c – iphone – NSTimers在后台

前端之家收集整理的这篇文章主要介绍了objective-c – iphone – NSTimers在后台前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我开发一个必须在后台运行的应用程序.这是一个基于位置的应用程序,所以它一直运行,操作系统不会杀死它.

它应该每10秒发送一些信息(仅用于调试),我在后台设置一个定时器.我在这个函数中设置了一个断点,每10秒钟执行一次,这是永远不会被调用的,但是如果我暂停应用程序,然后继续调用定时器,然后定时器每10秒钟执行一次,没有问题,奇怪的是?

我以为当我没有调试时,计时器将会执行,但是并不像我没有暂停调试一样.

我的问题是为什么?定时器设置正确(我假设),因为它暂停后工作,但不是.

有任何想法吗?

我设置定时器的方式是:

self.timer = [NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(doStuff) userInfo:nil repeats:YES];

并且在我连接到webservice的函数中.

谢谢.

解决方法

我有一个类似的应用程序设计,被困在同一件事情上.我在互联网上找到的地方是添加这种类型的语句applicationDidEnterBackground:
UIBackgroundTaskIdentifier locationUpdater =[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
         [[UIApplication sharedApplication] endBackgroundTask:locationUpdater];
        locationUpdater=UIBackgroundTaskInvalid;
     } ];

这告诉os你仍然有事情,而不是阻止它.

我的定时器附加到这个功能

//this is a wrapper method to fit the required selector signature
- (void)timeIntervalEnded:(NSTimer*)timer {
     [self writeToLog:[NSString stringWithFormat:@"Timer Ended On %@",[NSDate date]]];
     [self startReadingLocation];
     [timer invalidate];
     timer=nil;
}

我在我的位置管理器委托方法中设置了计时器.

我感受到你的痛苦.我发现这些东西是超级迷人的.这对我来说有用.我希望它有帮助.我发现在后台没有任何真正的限制.

猜你在找的C&C++相关文章