Android: блокировка пробуждения: снята ли блокировка в приостановленном приложении?

Я должен использовать вейклок (да, я не должен по очевидным причинам, но мне платят за это, так что у меня нет выбора, лол)

мой вопрос очень прост: когда я оставляю приложение onPause или onStop, отключается ли блокировка пробуждения приложения автоматически?

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

У меня проблема с моей текущей системой, когда приложение вызывает блокировку пробуждения при освобождении через обработчик сообщений (потому что оно исходит из другого потока), и это происходит «слишком поздно», и приложение аварийно завершает работу, потому что у него больше нет ссылка на блокировку пробуждения.

Я может быть не очень ясно, но главный вопрос здесь:

Должен ли я беспокоиться о том, что блокировка пробуждения моего приложения повлияет на телефон вне жизненного цикла приложения.

ваше здоровье

Джейсон


person Jason Rogers    schedule 02.08.2011    source источник


Ответы (3)


мой вопрос очень прост: когда я оставляю приложение onPause или onStop, отключается ли блокировка пробуждения приложения автоматически?

Неа. Вот почему вы должны использовать android:keepScreenOn в действии, а не WakeLock.

Должен ли я беспокоиться о том, что блокировка пробуждения моего приложения повлияет на телефон вне жизненного цикла приложения.

Абсолютно. Пока не отпустишь ту WakeLock телефон не уснет.

person CommonsWare    schedule 02.08.2011
comment
что мне действительно нужно сделать, так это каждый раз снимать блокировку пробуждения в методе onPause? - person Jason Rogers; 02.08.2011
comment
@Jason Rogers: Опять же, было бы лучше использовать android:keepScreenOn. - person CommonsWare; 02.08.2011

Блокировка пробуждения ОПРЕДЕЛЕННО влияет на ваше устройство, даже если ваше приложение НЕ находится на переднем плане!

Собственно, в этом весь смысл приобретения wake lock'ов.

Итак, убедитесь, что вы используете блокировку пробуждения ТОЛЬКО, когда у вас нет другого выбора, и если вам не нужна блокировка пробуждения, когда ваше приложение находится в фоновом режиме, обязательно снимите блокировку пробуждения в методе onPause()!

Это резко повлияет на производительность вашего устройства и АККУМУЛЯТОР!

person cesarmax    schedule 21.08.2012

Когда ваше приложение больше не находится в фокусе, блокировка пробуждения отменяется, только когда ваше приложение находится в фокусе, действует блокировка пробуждения.

person user740956    schedule 02.08.2011
comment
Это неправильно AFAIK. Если у вас есть пример приложения, демонстрирующий это, дайте ссылку! - person CommonsWare; 02.08.2011