GcmListenerService processes messages in parallel in the background thread, see the note in docs that methods are invoked asynchronously. That way, you can perform blocking tasks in onMessageReceived () without worrying about blocking future messages.
source share