1

По моему пониманию, GCMBaseIntentService полностью предоставляет методы для прослушивания сообщений из GCM, а также для обработки долговременных задач (регистрации регистрационного идентификатора с помощью нашего демонстрационного сервера). Это правда? Если true, - Почему мы не используем обычный BroadcastReceiver для прослушивания сообщений из GCM? - В некоторых примерах WakebackBroadcastReceiver часто используется для запуска IntentSevice, который также получает сообщения от GCM и обрабатывает их, почему мы используем это? Пожалуйста, помогите мне понять это! Любые идеи были бы оценены!Служба GCM с WakefulBroadcastReceiver

ответ

0

A WakefulBroadcastReceiver используется для GCM, чтобы гарантировать, что устройство не заснет, прежде чем приложение обработает сообщение. Общий поток:

  1. GCM-библиотека получает сообщение, отправляет широковещательную передачу в ваше приложение и удерживает блокировку во время работы вашего широковещательного приемника.
  2. Ваш WakefulBroadcastReceiver получает намерение сообщения, а затем вызов startWakefulService занимает некоторое время, чтобы убедиться, что устройство не переходит в режим сна до начала службы.
  3. начинает обслуживания и обработал сообщение, он должен также принять свой собственный wakelock, если он планирует сделать некоторую обработку, которая должна произойти сейчас, и занимает некоторое время

Если вы используете обычный BroadcastReceiver и не возьмите блокировку следа, затем устройство может переспать между 2 и 3, то есть сообщение может задерживаться.