Невозможно восстановить яркость при выходе из приложения - PullRequest
12 голосов
/ 01 марта 2012

В моем приложении есть функция (приложение метронома для музыкантов), чтобы уменьшить яркость экрана, чтобы сэкономить заряд аккумулятора.Чтобы установить яркость, я использую:

[UIScreen mainScreen].brightness = 0.1;

Я сохраняю исходную яркость при запуске приложения в viewDidLoad (...) и сохраняю ее в моих пользовательских настройках по умолчанию.

Когдаизменяя представления в приложении, я получаю исходную яркость из пользовательских настроек по умолчанию и восстанавливаю с помощью вызова:

[UIScreen mainScreen].brightness = originalBrightness;

Это работает отлично.У меня есть сообщения NSLog (...), показывающие исходное значение и т. Д., Поэтому механизм работает.

У меня проблема в том, как восстановить исходную яркость при выходе из приложения при нажатии кнопки «Домой»..

Я добавил аналогичный код в методы делегата моего приложения для:

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

Каждый из них имеет вызов метода для установки яркости экрана, как и раньше, в представлении с аналогичным NSLog (...) показывает восстановленную оригинальную яркость ... и все правильно.Я также произвел отладку, и выполняются вызовы для установки яркости ... но приложение закрывается, и экран устройства все еще находится на нижнем, затемненном уровне.

Наконец, если вы нажмете "Блокировка"нажмите кнопку сверху, затем нажмите кнопку «Домой», чтобы разбудить его ... яркость правильная.

Я подозреваю, что любое действие или событие, вызванное моим вызовом для установки яркости при выходе из приложения,не удается получить доступ, возможно, из-за недопустимого состояния или аналогичного.

Кроме того, мое приложение настроено на работу НЕ в фоновом режиме, для него в файле info.plist указано:

Application does not run in background     YES

AnyПомощь будет оценена.

Спасибо!

Ответы [ 3 ]

1 голос
/ 01 марта 2012

iOS позволяет этому приложению немного времени перед выходом. Вы можете попробовать sleep в течение доли секунды после установки яркости.

0 голосов
/ 31 августа 2015

Не было много радости с этим. Обходным решением было сбросить яркость в представлении ViewController. Не отличное решение, но единственное, которое я нашел до сих пор для работы (оно ломалось годами ...)

0 голосов
/ 16 июля 2013

Если вы внимательно прочитаете https://devforums.apple.com/thread/139813, это говорит о том, что изменения яркости не являются постоянными. Оригинальная яркость пользователя возвращается, когда вы нажимаете кнопку блокировки и снова разблокируете ее. На самом деле, мне пришлось восстанавливать яркость приложения, если пользователь нажимал кнопку блокировки во время работы приложения:

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