App Nap

在IOS上,为了节能,在程序进入后台后会被杀掉,在OS X上也有类似的机制,称为App Nap。提供了3个API以便你来使用。
第一个用来检测你的程序处于何种状态,这个方法会在应用程序的可见性发生改变时被调用。写在AppDelegate里。

func applicationDidChangeOcclusionState(notification: NSNotification) {
    if NSApp.occlusionState.rawValue == 8194 {
        print("foreground")
    } else {
        print("background")
    }
}

第二个用来设置计时器容忍度,这个还不太明白。。。貌似是说在各个应用内正在运行的计时器之间会有偏差,如果系统实时的矫正它们就会使CPU不停的处于繁忙的状态。设置计时器容忍度可以在差值达到一定程度后再进行矫正。苹果建议的值是10%。在启动计时器前设置下setTolerance就可以了。
第三个用来告诉系统你正在做的事是否重要,系统通过这个来判断是否可以进入小睡状态。

let queue = NSOperationQueue.mainQueue()
var token = NSProcessInfo.processInfo()
token.beginActivityWithOptions(NSActivityOptions.UserInitiated, reason: "can't be interapt")
queue.addOperationWithBlock { () -> Void in
    //做一些重要的事,在做这些事时App不会进入nap模式
}
NSProcessInfo.processInfo().endActivity(token)

token = NSProcessInfo.processInfo()
token.beginActivityWithOptions(NSActivityOptions.Background, reason: "not important")
queue.addOperationWithBlock { () -> Void in
    //这里做的事在app不可见时很可能被打断
}
NSProcessInfo.processInfo().endActivity(token)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值