2012-05-14 115 views
2

我希望有一個專家在那裏誰可以幫我這個:保持的NSTimer運行時,應用程序在後臺

我GOOGLE了好幾個小時,但如果有任何的方式來保持一個運行找不到任何信息當應用程序在後臺運行時NSTimer處於活動狀態?

問題場景是我需要設置按鈕單擊倒數計時器。剩餘時間顯示爲(02:34:45)作爲按鈕的標題。當應用程序進入後臺或暫停時,我的計時器如何繼續運行。請幫助我如何保持報警時間,選擇什麼值報警(如2小時3分鐘)

感謝您的幫助!

+0

我認爲這裏有一些關於後臺執行的內容......但是,我認爲如果將日期時間保存在applicationWillResignActive:app中會更好。委託的方法,然後重新計算applicationDidBecomeActive:方法中的剩餘時間。 祝你好運! ;) –

+0

謝謝男人..我認爲它會工作:)。你是否認爲它是唯一的解決方案,或者我們可以挖掘其他替代品..像背景胎面..等等 – Gaurav

回答

4

如果您將它用於鬧鐘,最好的方法是使用本地通知。這樣你就不需要使用任何後臺處理模式。

當您的應用程序即將進入後臺(在您的應用程序委託中的applicationWillResignActiveapplicationDidEnterBackground)時,獲取您的計時器剩餘多少時間。然後計劃爲本地通知在不遠的將來:

NSTimeInterval timeUntilNotification = ... 

UILocalNotification *localNotif = [[UILocalNotification alloc] init]; 
localNotif.fireDate = [[NSDate date] dateByAddingTimeInterval:secondsUntilNotification]; 
localNotif.soundName = UILocalNotificationDefaultSoundName; 

[[UIApplication sharedApplication] scheduleLocalNotification:localNotif]; 

當你的應用再次變爲活動,確保取消所有通知與cancelAllLocalNotifications