Действительно ли GCM-приложение нуждается в wakelock?
Я не совсем уверен, как интерпретировать эти предложения в Документация клиента GCM:
Разрешение android.permission.WAKE_LOCK, чтобы приложение могло удерживать процессор от сна при получении сообщения. Необязательно использовать, только если приложение хочет, чтобы устройство не спало.
.
Если вы не выполняете блокировку во время работы при переходе на работу к службе, вы фактически позволяете устройству снова заснуть до завершения работы. Конечным результатом является то, что приложение не может завершить обработку сообщения GCM до некоторой произвольной точки в будущем, что не является тем, что вы хотите.
и
Использование WakefulBroadcastReceiver не является обязательным требованием. Если у вас относительно простое приложение, которое не требует услуги, вы можете перехватить сообщение GCM в обычном BroadcastReceiver и выполнить свою обработку там.
Я не совсем уверен, что мое приложение должно содержать wakelock или нет (или если для этого требуется услуга).
Часть уведомлений Push Notation очень важна для приложения, и ее нельзя откладывать более нескольких минут. Есть ли вероятность, что BroadcastReceiver будет заблокирован до получения всех данных?
Ответы
Ответ 1
Есть ли вероятность, что BroadcastReceiver будет заблокирован до получения всех данных?
Нет. Вы не получите контроль до тех пор, пока вся загрузка 4K или менее не будет загружена и доступна вам.
Тем не менее, onReceive()
вызывается в основном потоке приложения, поэтому, если ваша работа займет больше миллисекунды, вы должны использовать WakefulBroadcastReceiver
и IntentService
для этой работы. Или, если хотите, используйте мой WakefulIntentService
и обычный BroadcastReceiver
.