Android периодическая служба испытывает трудности с использованием 3G, когда телефон находится в режиме ожидания - PullRequest
0 голосов
/ 23 февраля 2012

Я работаю над приложением Android, которое периодически запускает службу (каждые 15 минут) с помощью AlarmManager.

Служба отправляет / получает данные через Интернет.

Я заметил, когда 3G включен, и телефон бездействует. Трудно общаться с интернетом. Как будто 3G не включается автоматически, когда это необходимо.

Услуга отлично работает, когда пользователь использует телефон (и 3G) одновременно, но не когда телефон бездействует.

Любые предложения, как вызвать 3G, когда мне нужно?

1 Ответ

0 голосов
/ 23 февраля 2012

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

Важно создать wakelock в BroadcastReceiver, который вызывается из AlarmManager. Затем установите для WakeLock статическую ссылку и вызовите службу. Затем служба сбросит статическую ссылку и продолжит удерживать WakeLock, пока код не будет завершен.

Просто совет, вы можете посмотреть AlarmManager.setInexactRepeating для экономии энергии. Он объединяет похожие сигналы тревоги, поэтому телефон просыпается меньше раз. Также 15-минутный интервал очень короткий. Вы будете разряжать батарею, просто проснув телефон с таким временем. Хотя минимум часа это хорошо.

...