计时器在Swift 2的背景中

时间:2016-02-17 05:20:35

标签: swift timer swift2 xcode7

我想计算一下客户的时间(比如00:20:04)。但后台应用程序只能工作3分钟。 我有计时器,我可以计算NSDate应该关闭多少秒。但不知道怎么称呼这个功能。

所以我的问题是:应用程序如何理解应用程序在后台运行并停止工作,以及在返回应用程序时如何理解?

1 个答案:

答案 0 :(得分:1)

简答:

在用户开始计数时保存当前时间并在applicationWillEnterForeground中进行校准:实际上您可以在设置计时器的代码中进行校准。

答案很长:

如果您的应用处于暂停模式然后终止,您将无法收到任何通知。

  

应用程序必须随时准备终止,并且不应等待保存用户数据或执行其他关键任务。系统启动的终止是应用程序生命周期的正常部分。系统通常会终止应用程序,以便它可以回收内存并为用户启动的其他应用程序腾出空间,但系统也可能会终止行为不当或未及时响应事件的应用程序。

     

暂停的应用在终止时不会收到通知;系统终止进程并回收相应的内存。如果某个应用当前正在后台运行且未暂停,则系统会在终止之前调用其应用委托的applicationWillTerminate :.当设备重新启动时,系统不会调用此方法。

     

除了终止您的应用程序的系统之外,用户还可以使用多任务UI显式终止您的应用程序。用户启动的终止与终止暂停的应用程序具有相同的效果。应用程序的进程被终止,并且没有通知应用程序。

但是,您可以使用AppDelegate的这些方法在您的应用启动,输入背景或前景时收到通知:

  

应用程序:willFinishLaunchingWithOptions: - 此方法是您的应用程序在发布时首次执行代码的机会。

     

application:didFinishLaunchingWithOptions: - 此方法允许您在向用户显示应用程序之前执行任何最终初始化。

     

applicationDidBecomeActive: - 让您的应用知道它即将成为前台应用。使用此方法进行最后一分钟准备。

     

applicationWillResignActive: - 让您知道您的应用正在转变为前台应用。使用此方法可将应用程序置于静止状态。

     

applicationDidEnterBackground: - 让您知道您的应用现在在后台运行,并且可能随时被暂停。

     

applicationWillEnterForeground: - 让您知道您的应用程序正在移出后台并返回到前台,但它尚未激活。   applicationWillTerminate: - 让您知道您的应用程序正在终止。如果您的应用被暂停,则不会调用此方法。

阅读iOS app life cycleUIApplicationDelegate Protocol Reference了解更多详情。