Может ли кто-нибудь описать или указать мне хорошее описание на «как работает wakelock в андроиде»? Вы можете забыть о стандартной документации для Android.Как работает Wake-Lock в целом? Для меня это не работает
У меня есть сервис (запущен как передний план), и в сервисе будет запущен собственный поток. Поток остается в цикле, пока пользователь не остановит службу. В цикле поток выполняет HTTP-запрос. Из ответа поток знает, после какой задержки (1 минута или больше) должен выполняться следующий HTTP-запрос.
Когда дисплей включен, HTTP-запросы доходят до сервера в ожидаемое время. Но когда дисплей выключен, задержка является случайной. Например. в случае 1 минуты на самом деле его 2:21, 4:04, 4:40, ... Но, я хочу точное время также в случае отображения (предполагается, что он называется режимом глубокого сна).
Итак, я представил wakelock.acquire()
и wakelock.release
после HTTP-запроса, но это ничего не меняет.
Но это дает мне только общие вопросы:
Как, черт возьми, будет мой код просыпаются, чтобы сделать в wakelock.acquire()
когда телефон SLEEPS? Если я дойду до wakelock.acquire()
, тогда мне это не понадобится, или ...?
Хорошо, тогда я подумал, может быть, в глубоком сне мой код также выполнен, но некоторые вещи, такие как IP-трафик, не являются. Но тогда это должно сработать.
Из журналов logcat я вижу, что wakelock.acquire()
не вызывается вовремя. Так в чем его использование? Я не могу выполнить wakelock.acquire()
при запуске службы или ее потока, потому что это будет означать, что мой сервис будет препятствовать тому, чтобы телефон спал, даже когда я просто хочу сделать HTTP-запрос в 30-минутный период времени.
Я скорее не могу поверить, что с помощью wakelock.acquire()
вы можете сделать сервис на всю жизнь, не позволяя телефону глубоко спать.
Эй, может быть, я совершенно неправ, и с wakelocks я могу только помешать телефону глубоко спать, но я не могу разбудить телефон от глубокого сна. Но разве это не нормальный случай, что вам нужно немного разбудить телефон, чтобы что-то сделать ??? И другой вопрос: почему HTTP-запрос выполняется вообще в глубоком сне. Получает ли мое обслуживание некоторое время обработки, потому что какое-то другое приложение пробуждает телефон? Но как это приложение делает это. Я хочу, чтобы он делал то же самое. – valerian