iOS 600秒后杀死我的后台任务

时间:2011-10-16 09:52:48

标签: ios nstimer kill

我正在开发一款每30分钟需要后台任务更新位置的应用。 我已经尝试使用NStimer并更新每一分钟并且它有效(它花了2个小时工作)。但是,当我将其设置为30分钟时,iOS会在10分钟后杀死我的应用程序。

日志说:

Sun Oct 16 11:29:47 unknown SpringBoard[32] <Warning>: MyApp[315] has active assertions beyond permitted time: 
    {(
        <SBProcessAssertion: 0xbb34040> identifier: UIKitBackgroundCompletionTask process: MyApp[315] permittedBackgroundDuration: 600.000000 reason: finishTask owner pid:315 preventSuspend  preventIdleSleep 
    )}
Sun Oct 16 11:29:47 unknown SpringBoard[32] <Warning>: Forcing crash report of WhereAreYouReg[315]...
Sun Oct 16 11:29:48 unknown SpringBoard[32] <Warning>: Finished crash reporting.

我的后台任务是从这段代码开始的:

backgroundTaskIdentifier = [[UIApplication sharedApplication]
                   beginBackgroundTaskWithExpirationHandler:^{
                       // If you're worried about exceeding 10 minutes, handle it here
                   }];
    theTimer=[NSTimer scheduledTimerWithTimeInterval:30*60.0
                                              target:self
                                            selector:@selector(updateLocation)
                                            userInfo:nil
                                             repeats:YES];

updateLocation开始更新位置,当收到位置时,它会停止更新位置以节省电池。

应该怎么做这个后台任务?有什么帮助可以防止在600秒后杀死我的应用程序?

非常感谢!

1 个答案:

答案 0 :(得分:1)

你做不到。无法创建运行时间超过10分钟的后台任务。