我發現有幾個post詢問如何運行後臺任務。這可以。我知道了。有一個來自Apple的guideline,只能爲特定類型的應用程序完成。iOS:僅當APP處於活動狀態時纔會重複執行任務(無背景)
我的使用案例如下:我只想在APP在前臺時更新聊天App的聯繫人列表。因此,當應用程序分別處於以下狀態時,我可以開始/暫停/繼續:didBegan,didEnterBackground,didResumeFromBackground。
如何使用GCD實現這一目標?
換句話說,我怎樣才能以重複的方式安排異步任務,並且每隔一段時間纔會被調用一次(比如每0.5秒)?使用NSOperationQueue有沒有很好的實現?
編輯2:任務我想執行:
1:從GET:從web服務API含有上的觸點
2信息(在線狀態,設備,在lastseen)一個JSON數據對象GET一個web服務API一個包含消息給用戶的JSON數據對象
編輯:NSOperation文檔定義的操作只能用作「單次鏡頭」,因此創建遞歸操作可能不是解決此問題的最佳方法。
咦?遞歸操作?您可以使用塊創建操作,其行爲與分派隊列完全相同。 –
@LeoNatan我在評論中看到你的觀點。我會嘗試你的方法。所以基本上NSTimer對象只有在應用程序處於前景而不在後臺時執行,並且它們自己的內部恢復/暫停方法正確嗎? – mm24
是的。當應用程序進入後臺時,定時器被暫停。當它返回到前臺時,定時器恢復,任何到期的定時器將會觸發。對此的一個警告是,您的應用可能會在後臺中喚醒(例如推送)。在應用程序運行時,定時器也在後臺運行。 –