我正在制作时钟应用程序;带秒表和计时器。当我的应用程序进入后台(即用户进入主屏幕、切换到另一个应用程序或锁定手机)时,计时器和秒表停止计数。我知道有几个应用程序在进入后台后会继续运行。
我可以更改设置以使其保持运行吗?
我正在制作时钟应用程序;带秒表和计时器。当我的应用程序进入后台(即用户进入主屏幕、切换到另一个应用程序或锁定手机)时,计时器和秒表停止计数。我知道有几个应用程序在进入后台后会继续运行。
我可以更改设置以使其保持运行吗?
创建变量如
self.timeBeforeGoingBackgound = [NSDate date];
然后你可以花时间使用
[[NSDate date] timeIntervalSinceDate:self.timeBeforeGoingBackgound];
确切您的问题的简短答案是“否”您不能让您的应用程序在后台模式下执行某些操作。
在这里您可以找到 Apple 的 Doc,其中说明了可以在后台运行的内容。
同样对于您的情况,很容易实现秒表保存当前时间,例如在调用NSUserDefaults
此 AppDelegate 的方法 时并在方法applicationDidEnterBackground
中更新经过的时间applicationDidBecomeActive
您需要在进入后台时保存状态,然后在返回前台时恢复状态。这意味着计时器和实际计时数据。
为乔治的答案添加代码:
在你的applicationDidEnterBackground
NSDate *currentDate= [NSDate date];
[[NSUserDefaults standardUserDefaults] setObject:currentDate forKey:@"backgroundDate"];
在你的applicationDidBecomeActive
NSDate *dateWhenAppGoesBg= (NSDate *)[[NSUserDefaults standardUserDefaults] objectForKey:@"backgroundDate"];
NSTimeInterval timeSpentInBackground = [[NSDate date] timeIntervalSinceDate:dateWhenAppGoesBg];
现在你有timeSpentInBackground
几秒钟的时间,你可以从中更新 UI 或执行其余任务。