应用程序退出时无法恢复亮度

时间:2012-02-29 23:30:11

标签: iphone brightness mainwindow uiscreen

我的应用程序(音乐家的节拍器应用程序)中有一项功能可以调暗屏幕以节省电池寿命。要设置亮度,我正在使用:

[UIScreen mainScreen].brightness = 0.1;

我在viewDidLoad(...)中启动应用程序时保存原始亮度并将其保存到我的用户默认值。

在应用程序中更改视图时,我从用户默认值中检索原始亮度并通过调用恢复:

[UIScreen mainScreen].brightness = originalBrightness;

这很好用。我有NSLog(...)消息显示原始值等...所以机制有效。

我遇到的问题是如何在按下主页按钮时恢复应用程序退出时的原始亮度。

我在我的应用程序委托方法中添加了类似的代码:

applicationWillResignActive(...)
applicationDidEnterBackground(...)
applicationWillTerminate(...)

它们每个都有一个方法调用,用于在视图中设置屏幕亮度,类似的NSLog(...)显示检索到的原始亮度...并且它都是正确的。我也已调试并且正在调用设置亮度...但是应用程序退出,设备屏幕仍处于较低的调暗级别。

最后,如果单击顶部的“锁定”按钮,然后按“主页”按钮将其唤醒...亮度正确。

我怀疑无论在应用程序退出时调用亮度来触发任何操作或事件都无法通过,可能是因为状态无效或类似情况。

此外,我的应用程序设置为不在后台运行,在info.plist中设置为:

Application does not run in background     YES

任何帮助都将不胜感激。

谢谢!

3 个答案:

答案 0 :(得分:1)

iOS允许该应用程序在退出前一点点时间。设置亮度后,您可以在几分之一秒内尝试sleep

答案 1 :(得分:0)

如果您仔细阅读https://devforums.apple.com/thread/139813,则表示亮度变化不是永久性的。当您按下锁定按钮并再次解锁时,原始用户亮度会恢复。实际上,如果用户在我的应用运行时按下锁定按钮,我必须恢复应用亮度:

- (void)applicationDidBecomeActive:(UIApplication *)application{
    [self setBrightness];
}

答案 2 :(得分:0)

对此并不高兴。解决方法是重置ViewController viewWillDisappear上的亮度。不是一个很好的解决方案,但是到目前为止我发现的唯一一个解决方案(这已经被打破多年了......)