蘋果的iOS 4開發人員文檔很清楚地概述了這一點。
當你的應用程序關閉或切換離開時,它幾乎立即「掛起」,這意味着操作系統凍結了應用程序的狀態。當用戶切換回您的應用程序時,您的代碼將保持運行狀態。你不需要需要添加任何代碼到你的應用程序來做到這一點,只是編譯它對操作系統4.
以上是在大多數情況下是正確的。 「暫停」模式可能不適用的原因有兩個:
1)如果設備在內存中開始運行低電平,操作系統將開始終止暫時沒有切換的暫停應用程序,而不發出警告。這就是爲什麼你的應用程序要記住它的狀態對你最有利,所以如果你的應用程序被終止,然後重新打開,用戶並沒有真正注意,因爲它仍然返回到他們離開的地方。
2)您的應用程序使用「背景」API之一。這些用於音頻回放,VoIP服務或位置服務。在這種情況下,您的應用可以繼續在後臺運行,但只能訪問這些API。此外,您的應用可以將某些長時間運行的任務指定爲需要在應用暫停或終止之前完成的「後臺任務」,例如將圖片上傳到Flickr或渲染視頻等。
「後臺任務」方法不會無限期地檢測服務器,因爲任務有時間限制,之後它將被強制中止。與以往一樣,需要這種功能的應用程序需要實施推送通知。
這應該清除這一點。總而言之,我認爲這是一個在移動設備上進行多任務處理的非常優雅的解決方案。
我有0 iOS的經驗,所以這可能沒有幫助。但是,爲什麼不在後臺運行時做一些事情來查看它是否在運行(例如,每秒更新一次計數器)? – Cam 2010-06-09 05:22:37
好主意!我現在要嘗試... – 2010-06-09 05:50:28
我只是設置了一個計時器來每秒開啓並ping我的Web服務器。果然,當應用程序進入後臺時,定時器停止了觸發,即使它返回時它也會立即恢復到它暫停時的狀態。 – 2010-06-09 06:51:41