2012-05-14 77 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