Лучший способ периодически посещать опрос приложений для Android

Возьмем приложение Gmail в качестве примера. Включен ли телефон или нет, он опросает каждые 10 минут или около того, чтобы загрузить новые электронные письма, которые, возможно, появились с момента последнего подтверждения.

Я знаю, как создать новую службу и привязать ее к ней. Но я вижу несколько способов сделать это:

  • Привяжите один раз и выполните сервис в бесконечном цикле, спящий в течение 10 минут между каждым циклом
  • Привяжите и отвяжите права, когда это будет сделано, планирование следующего связывания как-то через 10 минут
  • Использование класса AlarmManager для планирования будущих опросов

Что такое компромисс? Как это делает приложение Gmail?

Благодаря!

Solutions Collecting From Web of "Лучший способ периодически посещать опрос приложений для Android"

Приложение Gmail использует pushing, а не опрос. Вместо этого я предлагаю использовать эту технику, опрос – это убийца батареи в мобильных устройствах.

Чтобы реализовать pushing, взгляните на C2DM .

Если вы все еще хотите опросить, рекомендуется использовать периодический сигнал тревоги в AlarmManager.

ОБНОВЛЕНИЕ : Google устарел C2DM и заменил его облачными сообщениями Google (GCM)

ОБНОВЛЕНИЕ : Google устарел GCM и заменил его Firebase Cloud Messaging (FCM)

  • Для непрерывного, но не интенсивного опроса, подобного тому, который вы прокомментируете (в диапазоне минут между опросами), я бы выполнил его с помощью AlarmManager. Таким образом, вы убедитесь, что телефон просыпается, чтобы опросить без необходимости в вакелоке, который уничтожит вашу батарею. Как указано в CommonsWare, вам все равно нужно будет использовать wakelock на время выполнения вашего кода, но вы можете выпустить его, как только код будет выполнен, избегая при этом держать телефон во время ожидания. См. Его комментарий для примера о том, как его реализовать.

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