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