我正在创建益智游戏应用程序,并使用 NSTimer 显示时间(即 01:20)。当应用程序进入后台时,NSTimer 会暂停,但即使应用程序处于后台状态,我也想继续它。
例如当应用程序进入后台时,计时器计数为 15 秒 and I 放置5秒现在我成为前台需要将计时器计数更改为 20 秒
我搜索了很多但没有得到好的答案。
所以请建议我如何实现这一目标。
不要将计时器视为用于计时的对象。可以将其视为以给定频率发出脉冲的物体。要测量时间,请记录开始时间并将其与当前时间进行比较。
要记录开始时间,请将其写入文件,如下所示,可能在appWillResignActive中:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *path = [paths objectAtIndex:0];
NSString *filename = [path stringByAppendingPathComponent:@"saveme.dat"];
NSData * data = [NSKeyedArchiver archivedDataWithRootObject:self.startDate];
[data writeToFile:filename atomically:NO];
// invalidate timer
当应用程序将变为活动状态时:
NSData *data = [NSData dataWithContentsOfFile:filename]; // using the same code as before
self.startDate = [NSKeyedUnarchiver unarchiveObjectWithData:data];
// start a timer for the purpose of pulsing only
此时经过的时间是:
NSDate *now = [NSDate date];
NSTimeInterval = [now timeIntervalSinceDate:self.startDate];
上述所有操作都可以在不后台运行的情况下完成。如果您确实需要一个计时器在后台触发,请参阅此苹果参考 https://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html。在“后台执行”下。简而言之,你可以做到,但苹果会让你在批准该应用程序之前满足几个标准——比如它必须是有限的并为用户提供实用性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)