首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于ios9的后台定时器

用于ios9的后台定时器
EN

Stack Overflow用户
提问于 2017-01-08 09:13:27
回答 1查看 948关注 0票数 0

我在我的应用程序中有一个后台过程。下面是代码:

代码语言:javascript
复制
@available(iOS 10.0, *)
func startTimer() {
    timer2?.invalidate()
    timer2 = Timer.scheduledTimer(withTimeInterval: 0.5, repeats: true, block: { (t) in
        if UIApplication.shared.applicationState == .background {
            NSLog("tic background \(UIApplication.shared.backgroundTimeRemaining)")

            if UIApplication.shared.backgroundTimeRemaining < 10 {

            }

        }

    })
    timer2?.fire()
}

但是,它只在iOS10中工作。有办法重写以前版本的iOS吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-08 09:54:58

在ios9或更低版本上没有基于块的计时器API。

要么使用方法作为回调,而不是块,要么使用第三方解决方案,例如BlocksKit (有数百个)

Id使用一种方法:

代码语言:javascript
复制
func startTimer() {
    timer2?.invalidate()
    timer2 = Timer.scheduledTimer(timeInterval: 0.5, target: self, selector: #selector(ViewController.timerFired(_:)), userInfo: nil, repeats: true)
    timer2?.fire()
}

@objc
func timerFired(_ timer: Timer) {
    NSLog("tic")

    if UIApplication.shared.applicationState == .background {
        NSLog("tic background \(UIApplication.shared.backgroundTimeRemaining)")

        if UIApplication.shared.backgroundTimeRemaining < 10 {

        }

    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41531140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档