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++类中,有6个默认成员函数: 构造函数 析构函数 拷贝...
#pragma once // 1. 设计一个不能被拷贝的类/* 解析:拷贝只会放生在两个场景中:拷贝构造函数以及赋值运...
C类型转换 C语言:显式和隐式类型转换 隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译...
//异常的概念/*抛出异常后必须要捕获,否则终止程序(到最外层后会交给main管理,main的行为就是终止) try...
#pragma once /*Smart pointer 智能指针;灵巧指针 智能指针三大件//1.RAII//2.像指针一样使用//3.拷贝问...
目录<future>future模板类成员函数:promise类promise的使用例程:packaged_task模板类例程...