2012-11-20 45 views
1

我想弄清楚如何使用後臺線程來執行命令有史以來的4小時。創建一個後臺線程,每4小時執行一次命令

我以前從來沒有這樣只有被閱讀關於它至今已創造這樣的事。其中我已經閱讀過的東西是這個

「線程佔用的物理內存和關鍵系統資源」

所以在這種情況下,讓這個線程檢查時間然後執行我的方法是一個不好的理想......或者有更好的選擇,我已經閱讀了關於GCD(Grand Central Dispatch)的內容,但我不確定是否這樣是否適用,因爲我認爲它更多用於併發請求?不是重複一遍又一遍地檢查時間..

或者終於有什麼我已經完全錯過了,你可以在哪裏執行一個請求,每4小時?

任何幫助將不勝感激。

回答

2

有一個最大時間允許後臺進程運行(10分鐘),這將使您的方法困難。你的下一個最好的嘗試是計算下一個事件,以保存某個地方的時間戳。然後,如果應用程序在該事件或之後執行,它可以執行任何您想要的操作。

這可能幫助: http://www.audacious-software.com/2011/01/ios-background-processing-limits/

+0

我想他/她的意思是'如何創建一個線程,並從現在起4個小時後安排一個計時器'。 – ZhangChn

1

我認爲,這將是很好的利用時間戳和張貼時小時的時間到達從現在的通知。

多線程並不是一個很好的手段,因爲基本上你會運行一個循環吃四個小時的時鐘週期。由於操作系統的魔力,這不會吞噬整個核心或任何愚蠢的東西,但是如果它被允許運行,它將被連續計算。這將是一個巨大的資源浪費,所以它是不允許的。 GCD並不是真的用於這種事情。這意味着允許併發來平滑UI交互以及更有效地完成任務,4小時循環將是不合適的。將併發性看作是一種工具,可以在加載或更改內容時與表進行交互。 GCD塊在正確使用時非常容易。 GCD和其他多線程能力使工具可以在後臺執行計算,並與數據庫交互並處理請求,而不會影響用戶體驗。很多更聰明的人都寫了很多關於多線程/多任務是什麼以及它的優點。在一段時間內發佈消息的方式將是多任務處理的方法,而沒有通過GCD持續執行塊以至於等待4小時的時間段,但是可以這樣做。您可以執行一個監視時間小於線程生命週期的最大長度的塊,然後在線程執行結束時再次調度它,直到達到所需的時間。這是做這件事的一個壞方法。將通知發佈到通知中心,這很容易,並且可以實現您的目標,而無需處理自己的多線程複雜性。

您可以發佈通知請求觀察時間變化,它會返回其備註,但是這需要您的應用程序處於活動狀態或在後臺。我不能保證操作系統不會殺死你的應用程序,但是如果它在「背景」狀態下很小且很安靜,它的通知中心請求將保持活動並按預期運行。

相關問題