Подтвердить что ты не робот

Действительно ли GCM-приложение нуждается в wakelock?

Я не совсем уверен, как интерпретировать эти предложения в Документация клиента GCM:

Разрешение android.permission.WAKE_LOCK, чтобы приложение могло удерживать процессор от сна при получении сообщения. Необязательно использовать, только если приложение хочет, чтобы устройство не спало.

.

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

и

Использование WakefulBroadcastReceiver не является обязательным требованием. Если у вас относительно простое приложение, которое не требует услуги, вы можете перехватить сообщение GCM в обычном BroadcastReceiver и выполнить свою обработку там.

Я не совсем уверен, что мое приложение должно содержать wakelock или нет (или если для этого требуется услуга). Часть уведомлений Push Notation очень важна для приложения, и ее нельзя откладывать более нескольких минут. Есть ли вероятность, что BroadcastReceiver будет заблокирован до получения всех данных?

4b9b3361

Ответ 1

Есть ли вероятность, что BroadcastReceiver будет заблокирован до получения всех данных?

Нет. Вы не получите контроль до тех пор, пока вся загрузка 4K или менее не будет загружена и доступна вам.

Тем не менее, onReceive() вызывается в основном потоке приложения, поэтому, если ваша работа займет больше миллисекунды, вы должны использовать WakefulBroadcastReceiver и IntentService для этой работы. Или, если хотите, используйте мой WakefulIntentService и обычный BroadcastReceiver.