Страницы

Поиск по вопросам

четверг, 2 января 2020 г.

Как запретить останавливать сервис при блокировке экрана?

#android #java


Здравствуйте, у меня есть приложение, которое отправляет данные на сервер каждые
5 минут по wi-fi. Я написал сервис, в котором реализовал пару таймеров.
При закрытии приложения все работает прекрасно, но стоит нам дождаться момента, когда
экран погаснет, сервис перестает отсылать данные. Но стоит нам зажечь обратно экран,
как приложение опять начинает отсылать данные. 
Я хочу добиться того, чтобы сервис не останавливался, т.е. данные отсылались всегда,
независимо от состояния экрана. Вы можете что-нибудь посоветовать?
Спасибо всем за ответы, мне помогло использование Power Manager PARTIAL_WAKE_LOCK
http://developer.android.com/reference/android/os/PowerManager.html . Правда пришлось
пожертвовать расходом энергии    


Ответы

Ответ 1



CWAC Wakeful, например. Но за такие решения авторов надо сжигать на кострах, ибо оно батарею сжирать будет постоянно.

Ответ 2



Как написали ниже, если сервис висит постоянно - это очень некрасиво по отношению к батарее. Однако любая платформа предоставляет такое решение, как background tasks - как понятно из названия, это задачи, которые выполняются в фоновом режиме; насколько помню из общения с wp, есть и опция пробуждения раз в (некоторый период времени). Это не гарантирует бесконечность выполнения сервиса (при переполнении списка бекграундовых тасков ОС убьет самые старые), но является общепринятым подходом.

Ответ 3



все зависит от задачи и условий. есть, можно сказать корпоративное ПО, там где сервисы должны работать всегда. а по существу, при старте сервиса int NOTIFICATION_ID = 123123; ... startForeground(NOTIFICATION_ID, new Notification()); если не нужен больше сервис, не забываем stopForeground(true);

Комментариев нет:

Отправить комментарий