gpt4 book ai didi

iphone - 当应用程序进入后台时如何继续运行 NSTimer

转载 作者:行者123 更新时间:2023-12-03 20:27:32 30 4
gpt4 key购买 nike

我正在创建益智游戏应用程序,并使用 NSTimer 显示时间(即 01:20)。当应用程序进入后台时,NSTimer 会暂停,但即使应用程序处于后台状态,我也想继续它。

例如,当应用程序进入后台时,计时器计数为 15 秒,我将其放置 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];

上述所有操作都可以在不后台运行的情况下完成。如果您确实需要一个在后台触发的计时器,请参阅此 apple ref 。在“后台执行”下。简而言之,你可以做到,但苹果会让你在批准该应用程序之前满足几个标准——比如它必须是有限的并为用户提供实用性。

关于iphone - 当应用程序进入后台时如何继续运行 NSTimer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15790547/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com