didFinishLaunchingWithOptions中的“ idleTimerDisabled”如何工作?

时间:2019-07-17 15:33:31

标签: ios objective-c ios-background-mode

我不确定以下代码如何在appdelegate的didFinishLaunchingWithOptions中工作?

[[UIApplication sharedApplication] addObserver: self forKeyPath: @"idleTimerDisabled" options: NSKeyValueObservingOptionOld | NSKeyValueObservingOptionNew context: nil];

“ idleTimerDisabled”到底有什么用?

谢谢

1 个答案:

答案 0 :(得分:1)

idleTimerDisabled的Apple文档

  

此属性的默认值为NO。当大多数应用程序在短时间内没有触摸作为用户输入时,系统会将设备置于屏幕变暗的“睡眠”状态,这是为了节省电量。但是,没有用户输入的应用程序

>加速度计(例如游戏)可以通过将此属性设置为YES来禁用“空闲计时器”来避免系统睡眠。

通过为该值分配true,当用户不执行任何操作(触摸,按下,滚动等)时,iOS不会使屏幕变暗并锁定iPhone。在游戏与其他普通应用程序中可以找到此示例。游戏使iPhone的唤醒时间比其他应用程序更长。


对于
[[UIApplication sharedApplication] addObserver: forKeyPath: options: context:]
这是 Objective-c键值观察,又称 KVO
您的代码的意思是,当有人用任意值{em> UIApplication.sharedApplication.idleTimerDisabledtrue分配或更改false 时,您希望收到关于[self observeValueForKeyPath: ofObject: change: context:]方法签名的分配或更改的调用。

选项NSKeyValueObservingOptionOld | NSKeyValueObservingOptionNew表示,您希望在更改字典中收到有关更改的旧值新值的更多信息,您可以稍后在观察方法。

有关KVO的更多信息,请通过this post检出NSHipster

AppCodathis也有很好的解释。


结论
您的代码行的意思是,您希望收到有关在KVO观察方法中对UIApplication.shared.idleTimerDisabled属性所做的更改的通知,并且您想要访问旧值新值< / strong>,通过 change 字典。