【发布时间】:2016-01-19 21:53:08
【问题描述】:
我正在开发一个 sdk,它使用 NSTimer 在 x 分钟到期时进行服务器调用,并且服务器调用在完成一些工作后将计时器重置回 x 分钟。我遇到的问题是当我的应用程序在后台时我的计时器停止运行,并在我的应用程序回到前台时立即恢复。我如何让它发挥作用?
//initialize self.myTimer somewhere in my code
//called once somewhere in my code-->[self resetTimer:self.myTimer expiry:30];
- (void)resetTimer:(NSTimer *)timer expiry:(float)seconds {
[timer invalidate];
NSTimer *newTimer = [NSTimer timerWithTimeInterval:seconds
target:self
selector:@selector(updateTimer:)
userInfo:nil
repeats:NO];
[[NSRunLoop mainRunLoop] addTimer:newTimer forMode:NSRunLoopCommonModes];
self.myTimer = newTimer;
}
- (void) updateTimer:(NSTimer *)timer {
[timer invalidate];
dispatch_queue_t queue = dispatch_queue_create("update", NULL);
dispatch_async(queue, ^{
[self serverCall];
});
}
-(void)serverCall{
//make server call and do some work
[self resetTimer:self.myTimer expiry:30];
}
【问题讨论】:
标签: ios objective-c nstimer background-process