簡單&快速回答,不可以。在主頁按鈕被按下後,您不能運行一個小時的計時器。你可以做的就是熟悉當用戶按下主頁按鈕然後切換回你的應用程序時所進行的調用。
這些是你現在會收到電話(多任務):
// User taps your app icon first launch
application:didFinishLaunchingWithOptions:
applicationDidBecomeActive:
// User pushes home button
applicationWillResignActive:
applicationDidEnterBackground:
// User selects your app again
applicationWillEnterForeground:
applicationDidBecomeActive:
如果設置Application does not run in background
關鍵YES
,或者如果您的設備不支持多任務(即iPod touch的第二代),那麼完全相同的動作會調用這些方法。
// User taps your app icon first launch
application:didFinishLaunchingWithOptions:
applicationDidBecomeActive:
// User pushes home button
applicationDidEnterBackground:
applicationWillTerminate:
// User selects your app again
application:didFinishLaunchingWithOptions:
applicationDidBecomeActive:
請注意,如果OS決定殺死你的內存的應用程序,也不會叫你起牀只是爲了殺你,你永遠不會保證收到applicationWillTerminate:
電話。
我能想到兩種動機對你的問題的:
1)你想保存狀態,想做到這一點在applicationWillTerminate:
,但它沒有被調用。如果是這種情況,我建議將狀態保存在applicationDidEnterBackground:
中,因爲在用戶按下主頁按鈕時都會調用狀態。
2)如果應用程序在一段時間內處於非活動狀態,您希望重新加載數據。如果是這種情況,請在applicationDidEnterBackground:
期間存儲當前時間,並檢查在applicationDidBecomeActive:
中已經過了多少時間,並在必要時重新加載。
出於純粹的好奇心,爲什麼你不想在'後臺運行'應用程序不會運行'YES'? – NJones
正如我所說,我正在閱讀一個網頁,我希望我的應用能夠反映網頁上的最新帖子。同時我想保持狀態,這樣如果他們經常重新訪問應用程序,我不會重新加載數據。其實它是你的答案中的第2點。我將嘗試在applicationDidEnterBackground中保存時間:現在。 – curious123