如何在后台使用应用程序时定期调用iPhone方法,在前台使用NSTimer

时间:2011-07-07 11:45:34

标签: ios4 notifications xcode3.2

我正在使用[NSTimer scheduledTimerWithTimeInterval ...],当我的应用程序位于前台时它可以正常工作,但是当我在后台使用它时,它似乎无法正常工作。

应该发生的是应用程序定期调用Web服务,因此在模拟器中我可以看到它打印出通信。

我正在观察UIApplicationDidEnterBackgroundNotification事件,所以我可以更改模式,因为我似乎需要切换到设置几个预定的通知调用,但是当他们切换回我的应用程序时遇到问题因为我会在一段时间内两次调用该服务,或者需要取消所有通知调用。

在模拟器中,当我将另一个程序带到前台时,我没有看到我要去applicationDidEnterBackground,这也是一个值得关注的问题,但更大的问题是我应该如何定期调用该方法在前景或背景中。

如果它有任何区别,我使用的是XCode 3和4.0 SDK。

1 个答案:

答案 0 :(得分:0)

我发现重新启动计算机后应用程序确实转到applicationDidEnterBackground

但是,为了进行我的webservice调用,我必须在后台同步调用,因为异步调用似乎只是默默地失败。我正在使用ASIHttpRequest(http://allseeing-i.com/ASIHTTPRequest/)。

由于NSTimer在后​​台不起作用,我开始使用NSThread并使用了一个任务,我可以设置它应该睡多久的时间。我相信这是在主线程上完成的,因为应用程序在后台,所以这似乎不是问题。

为了使其中的任何一个工作,我必须将location放在info.plist中,这最终可能会使用更多的电池。