2012-10-12 23 views
1

這是一個相當普遍的問題,當應用程序從背景返回實際發生的事情。我有一個用戶告訴我,在打開我的應用程序時,他沒有使用過一天,他仍然會顯示與他關閉應用程序之前相同的視圖(通過「關閉」,我的意思是他只是點擊主頁按鈕發送到背景,不保留,然後點擊十字按鈕完全殺死應用程序)。控制應用程序何時刷新從背景返回

我的印象是,如果應用程序在很長一段時間後從後臺恢復,它將完全重新加載(顯示啓動畫面和所有內容),就像我在避難所後打開Facebook或Gmail應用程序的情況一樣用了一段時間。

所以我的問題是,我必須在自從我的應用程序發送到後臺以來經過的時間段內執行一次檢查,並在超過某個閾值時重置所有內容,或者應該由iOS處理本身......當然,如果用戶發送我的應用程序的背景和回報2分鐘後,我不想刷新

回答

2

您可能必須通過設置一個時間戳來處理你的appdelegate方法。由於iPhone中啓用了多任務處理,它將再次從同一屏幕開始。一個應用程序可以在後臺很長一段時間,直到用戶決定殺死該應用程序。

一些委託方法是

- (void)applicationWillResignActive:(UIApplication *)iApplication; 
- (void)applicationDidEnterBackground:(UIApplication *)iApplication; 
- (void)applicationWillEnterForeground:(UIApplication *)iApplication; 
- (void)applicationDidBecomeActive:(UIApplication *)iApplication; 

如果要禁用多任務,你可以做到這一點通過設置應用程序的plist一個UIApplicationExistsOnSuspend關鍵。但是,當用戶按下home按鈕時,這會使應用程序立即退出。

+0

這就是我想如果我必須手動執行它,我只是想知道是否有一些內置的設置來調整,因爲在Facebook和Gmail應用程序的情況下,當一段時間過去了,我重新打開應用程序,他們的啓動畫面將顯示,這讓我想知道實際上有一個內置的設置來控制此行爲。我知道我可以在啓動屏幕上顯示代碼,當閾值時間戳已經過去時,但是又想知道是否有一種簡單的方法可以避開我:) – minovsky

+0

不幸的是沒有。這是一個稍微不同的問題和答案。 http://stackoverflow.com/questions/4282097/enabling-and-disabling-multitasking-within-application – iDev

0

決定您的應用程序是否應該在一段時間後在後臺刷新完全取決於您和您的應用程序的需求。應用程序可以在後臺坐幾個星期而不會被操作系統殺死。或者它可能會在進入後臺幾秒後被殺死。這一切都取決於其他正在運行的應用程序所需的資源。

例如,如果您想讓應用程序中的邏輯在24小時後重新啓動,則由您編寫代碼來處理此問題。當應用程序進入後臺時保存一個時間戳。當它返回到前臺時,將當前時間與保存的時間戳進行比較。如果足夠的時間過去了,您需要更新您的用戶界面以反映想要顯示用戶的任何期望狀態。

+0

這就是我想如果我必須手動執行,我只是想知道是否有一些內置的設置來調整,因爲在臉書和Gmail應用程序的情況下,當一段時間過去了,我重新打開了應用程序,它們的啓動畫面會顯示出來,這讓我想知道實際上有一個內置的設置來控制這種行爲。我知道我可以讓啓動畫面的代碼在閾值時間戳過去時顯示,但是又想知道是否有一種簡單的方法可以避開我:) – minovsky

+0

不,沒有辦法指出你的應用程序應該是在一段時間後終止。你要麼表明你的應用程序應立即終止,或者您選擇在後臺永遠地坐着,或直至OS決定你是在路上,需要被殺死。 – rmaddy