在后台执行代码

时间:2011-04-19 13:18:07

标签: iphone objective-c cocoa-touch

我有一个应用程序定期(通过NSTimer)使用locationManager:startUpdatingLocation询问用户位置我希望locationManager在后台运行,因此在信息中输入了“UIBackgroundModes = location”。 plist文件。

我的问题是我没有看到我期望的结果,我正确地认为当我按下主页按钮时,应用程序委托调用“applicationDidEnterBackground”但是虽然允许locationManager继续我的NSTimer被暂停(并且作为结果是它没有调用startUpdatingLocation定期查询设备位置)。任何想法/解决方案都将非常感谢......

加里。

2 个答案:

答案 0 :(得分:3)

进入后台时,所有NSTimers均无效。您需要通过CLLocationManager进行检查以进行任何更改。

只需保持startUpdateLocation运行,您委托将收到该位置的任何重大更改。

在后台运行时,您只会根据手机信号塔收到位置更改。

答案 1 :(得分:1)

如果您阅读-applicationDidEnterBackground:的文档,则会发现是,您的计时器无效。此外,iOS应用程序编程指南会告诉您如何track location from the background