2010-10-28 68 views
3

当我的iPhone应用程序进入后台模式时,我必须保留NSThread或NSTimer。可能吗 ?我已经启用在info.plist中后台模式,打开readstream和writestream如下...(我使用UDP)iOs 4后台模式下的NSTimer或NSThread

CFReadStreamSetProperty(readStream,kCFStreamNetworkServiceType,kCFStreamNetworkServiceTypeVoIP);

CFWriteStreamSetProperty(writeStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP); 

但是,当我的应用程序切换到后台和锁定状态,NSThread或的NSTimer并没有叫。那么请告诉我如何在iPhone背景锁定状态下实现后台线程?

回答

1

我也想知道。

我想每五分钟更新一次CLLocation(当前位置)对象。我知道的唯一方法就是用NSTimer做到这一点。

如果这是不可能的,您的建议是什么?

+1

唯一的出路似乎是startMonitoringSignificantLocationChanges。 – 2010-11-16 20:10:06

1

而不是NSTimer使用UILocalNotification它可以在应用程序在后台和前台时触发通知。

1

对于某些应用程序(音频,位置,voip),Apple允许在支持的设备上使用background execution

支持某些类型的后台执行必须由使用它们的应用程序预先声明。应用程序通过在其Info.plist文件中包含UIBackgroundModes密钥来声明此支持。它的值是一个包含一个或多个字符串具有以下值的数组:

audio 
location 
voip