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

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

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

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

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

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

1 ответ

Решение

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

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

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

Другие вопросы по тегам