0

我正在制作时钟应用程序;带秒表和计时器。当我的应用程序进入后台(即用户进入主屏幕、切换到另一个应用程序或锁定手机)时,计时器和秒表停止计数。我知道有几个应用程序在进入后台后会继续运行。

我可以更改设置以使其保持运行吗?

4

4 回答 4

0

创建变量如

self.timeBeforeGoingBackgound = [NSDate date];

然后你可以花时间使用

[[NSDate date] timeIntervalSinceDate:self.timeBeforeGoingBackgound];
于 2013-09-07T17:46:12.113 回答
0

确切您的问题的简短答案是“”您不能让您的应用程序在后台模式下执行某些操作。

在这里您可以找到 Apple 的 Doc,其中说明了可以在后台运行的内容。

同样对于您的情况,很容易实现秒表保存当前时间,例如在调用NSUserDefaults此 AppDelegate 的方法 时并在方法applicationDidEnterBackground中更新经过的时间applicationDidBecomeActive

于 2013-09-07T17:46:16.777 回答
0

您需要在进入后台时保存状态,然后在返回前台时恢复状态。这意味着计时器和实际计时数据。

于 2013-09-07T17:46:23.100 回答
0

为乔治的答案添加代码:

在你的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 或执行其余任务。

于 2013-09-08T03:34:39.630 回答