按下主页按钮后NSTimer不触发

时间:2016-09-12 13:19:28

标签: ios swift nstimer

II每秒都会设置一个NSTimer。使用模拟器,通过按主页按钮导航离开应用程序后,这将正确调用eachSecond()方法。但是,在真正的iPhone 6上,一旦我离开,每个秒都不再被调用,直到应用程序再次打开。

为什么在真实设备上这会有不同的表现?反正是否确保它会在这个用例中每秒发射一次?

它是一款健身应用程序,因此需要在手机锁定或用户即时离开时记录持续时间。

谢谢,

lazy var timer = NSTimer()

fun init() {
   timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: #selector(RunViewController.eachSecond(_:)), userInfo: nil, repeats: true)
}

func eachSecond() {
 // update UI etc.
}

2 个答案:

答案 0 :(得分:5)

暂停您的应用时,NSTimer不会触发。在XCode下运行时后台执行不同;后台执行限制不适用。

为了确定暂停应用程序的时间,您可以在applicationDidEnterBackground中存储时间戳,并根据{{1}中保存的时间戳和当前时间之间的差异计算已用时间}

答案 1 :(得分:0)

您需要将计时器添加到主运行循环中。

func init() {
    timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: #selector(RunViewController.eachSecond(_:)), userInfo: nil, repeats: true)

    NSRunLoop.mainRunLoop().addTimer(timer, forMode: NSRunLoopCommonModes)
}