No recibe mensajes de GCM en Android después de que la aplicación se aleje de tareas recientes

Estoy implementando GCM para notificaciones push usando GcmReceiver y GcmListenerService. Cuando la aplicación se está ejecutando en primer plano o en segundo plano, recibo las notificaciones correctamente.

Mi problema es cuando deslizo la aplicación de la lista de "tareas recientes", ya no puedo recibir mensajes de GCM (estoy en un Xiaomi Mi3). Entiendo que si obligas a cerrar una aplicación, ya no recibirás notificaciones push. Sin embargo, eliminarlo de las "tareas recientes" debería permitir que la aplicación reciba notificaciones push.

He probado esto con WeChat y Facebook Messenger, y sigo recibiendo notificaciones cuando elimino la aplicación (pero no si la fuerza cerrarla desde Configuración).

¿Qué estoy haciendo mal aquí?

Manifiesto:

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.considerdigital.p1mobileapp" > <permission android:name="com.considerdigital.p1mobileapp.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="com.considerdigital.p1mobileapp.permission.C2D_MESSAGE" /> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <uses-permission android:name="com.google.android.c2dm.permission.SEND" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <application android:name=".App" android:allowBackup="true" android:icon="@drawable/p1_app_icon" android:label="@string/app_name" android:theme="@style/Theme.P1mobileapp" > <receiver android:name="com.google.android.gms.gcm.GcmReceiver" android:exported="true" android:permission="com.google.android.c2dm.permission.SEND" > <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <category android:name="com.considerdigital.p1mobileapp" /> </intent-filter> </receiver> <service android:name=".ListenerService" android:exported="false" > <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> </intent-filter> </service> 

GcmListenerService:

 public class ListenerService extends GcmListenerService { private static final String TAG = "MyGcmListenerService"; public static final String FOREGROUND_NOTIFICATION = "FOREGROUND_NOTIFICATION"; private NotificationManager mNotificationManager; @Override public void onMessageReceived(String from, Bundle data) { // Send notification only if app is in background if (!P1GlobalVariables.getSharedInstance().isAppActive) { System.out.println("App is inactive"); sendNotification(data); } else { System.out.println("App is active"); sendForegroundNotification(data); } Log.i(TAG, "Received: " + data.toString()); } 

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.