2010-07-20 168 views
0

在我的iPhone應用程序中,當 應用程序處於後臺時,我想運行幾個查詢。 我已經使用ASIHttpRequest進行查詢,但工作正常,但現在我試圖找到一種方法在後臺觸發它們。 在應用程序的委託,我已經加入到發出請求的方法的調用:iPhone應用程序,在後臺應用程序中運行http請求

[自getItemsFromServer]

getItemsFromServer運行的異步請求(在模擬器上我 看到這個方法的日誌,一旦我得到將應用程序返回到前景 )。 如何使用某種計時器讓這種方法每10分鐘運行一次(我只需要運行它4到5次,而不是每10分鐘,直到 它回到前臺:-))?

非常感謝,

最好的問候,

呂克

回答

2

iOS4允許您的應用運行X時間,並授予您iOS4的時間請求。退房時間:Completing a Long-Running Task in the Background

具體來說,

它被暫停之前的任何時間,應用程序可以調用beginBackgroundTaskWithExpirationHandler:方法來向系統請求額外的時間來在後臺完成一些長時間運行的任務。如果請求被授予,並且如果應用程序在任務正在進行時進入後臺,則系統讓應用程序運行額外的時間量而不是掛起它

+0

我一定會試試這個。非常感謝 – Luc 2010-09-22 07:20:41

+0

不客氣! =) – RoLYroLLs 2010-10-03 19:58:27

0

你也許可以使用任務結束做到這一點。在iOS中,您可以將線程標記爲完成並給它一個特定的生活時間。這樣可以讓您對Web服務器進行更多的調用。

看一看Executing Code in the Background

+0

-1後臺任務不工作像那樣。它們與流程相關聯,而不是單個線程。你也不會指定一個時間;你(在最近的測試中)可以達到600秒。 – 2010-11-21 16:39:59

+0

@tc - 大聲笑你只是downvote大家? :) – willcodejavaforfood 2010-11-21 16:43:32

-1

其實,你是專門不允許作一般性HTTP調用,而在後臺。可以在後臺激活的唯一應用程序是播放音頻,確定位置或正在運行VOIP呼叫的應用程序。我相信蘋果的背景是整個理念,除了這些有限的情況之外,應用程序不應該做「工作」,因爲可用資源有限。建議的解決方法是使用(ugh)通知或在應用程序醒來時刷新。 willcodejavaforfood參考文檔解釋了這一點。

+0

這不完全是真實的(從我認爲[在背景中完成長時間運行的任務](http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/ BackgroundExecution.html#// apple_ref/DOC/UID/TP40007072-CH5-SW6))。 – RoLYroLLs 2010-08-27 19:34:25

+1

-1。對HTTP請求有*特定的支持:*使用URL加載系統時,使用NSMutableURLRequest對象的setNetworkServiceType:方法來設置請求的網絡服務類型。服務類型應該設置爲NSURLNetworkServiceTypeVoIP。* – 2010-11-21 16:41:02