2016-03-15 3 views
6

Когда я продюсирую GcmListenerService, это onMessageReceived работает в фоновом режиме или это на потоке пользовательского интерфейса? Мне нужно знать, могу ли я делать сетевые вызовы внутри тела метода без использования asyncTask или такого.Для GcmListenerService находится onMessageReceived background?

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

ответ

-1

Услуги не выполняются на Ui/main thread.

Служба также может запускаться (в фоновом режиме), даже когда приложение закрыто, таким образом вы можете получать push-уведомление, прослушивать намерение, вызванное при получении нажатия и использовать его для пробуждения вашего приложения.

+1

[Методы вызываются асинхронно.] (Https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmListenerService) –

0

Простая проверка, чтобы определить текущий поток является ли основная нить пользовательского интерфейса

boolean isMain = Looper.getMainLooper().getThread() == Thread.currentThread(); 

onMessageReceived размещен внутри метода указывает на то, что она работает в фоновом процессе (answer к аналогичному вопросу).

0

Когда я расширяю GcmListenerService, это onMessageReceived работает в фоновом режиме или это в потоке пользовательского интерфейса? Мне нужно знать, могу ли я совершать сетевые вызовы внутри тела метода без использования asyncTask или таких.

Да, вы можете совершать сетевые вызовы внутри метода onMessageReceived(), потому что он работает в фоновом режиме. Например, вы можете загрузить изображение в этом методе, прежде чем отображать его при уведомлении, используя стиль уведомления об изображении.

Смежные вопросы