我在我的应用程序(一个面向音乐家的节拍器应用)中有一个功能,可以调暗屏幕以节省电池寿命。为了设置亮度,我正在使用:
[UIScreen mainScreen].brightness = 0.1;
我在应用程序启动时在viewDidLoad(...)中保存原始亮度,并将其保存到UserDefaults中。
当在应用程序内更改视图时,我从UserDefaults中检索原始亮度并通过调用以下方法进行恢复:
[UIScreen mainScreen].brightness = originalBrightness;
这个很好用。我有NSLog(…)消息显示原始值等...所以机制是有效的。
我的问题是如何在应用程序退出时通过按Home按钮来恢复原始亮度。
我已经将类似的代码添加到我的应用程序委托方法中:
applicationWillResignActive(...)
applicationDidEnterBackground(...)
applicationWillTerminate(...)
他们每个都有一个方法来设置屏幕亮度,就像在视图中使用类似的NSLog(...)显示检索到的原始亮度一样...一切都正确。我也进行了调试,调用设置亮度的方法...但应用程序退出后,设备屏幕仍处于较低、暗淡的水平。最后,如果你点击顶部的"锁定"按钮,然后按Home键唤醒它...亮度就正常了。
我怀疑,在应用程序退出时触发的任何动作或事件与我调用设置亮度的方法没有传递过去,可能是由于无效状态或类似的原因。
此外,我的应用程序被设置为不在后台运行,在info.plist中设置为:
Application does not run in background YES
希望能得到任何帮助。
谢谢!
[UIScreen mainScreen].brightness = 1.0;
也不起作用。 - ari gold