Il y a quelques jours, j'ai remarqué que je ne recevais plus de messages WhatsApp jusqu'à ce que je lance manuellement l'application, ce qui fait que les messages en attente sont délivrés en une seule fois.
J'ai commencé mon enquête en surveillant le com.whatsapp.messaging.MessageService
dans le gestionnaire d'applications.
Voici à quoi cela ressemble au début, après que j'ai quitté WhatsApp :
Et voici à quoi ça ressemble quelques minutes plus tard :
On dirait que le MessageService
soit il a démissionné, soit il a été licencié. Pour vérifier cela, j'ai vérifié avec adb. Je peux voir le service au début :
$ adb shell dumpsys activity services | grep wh
* ServiceRecord{43deec28 u0 com.whatsapp/.messaging.MessageService}
intent={act=com.whatsapp.messaging.MessageService.START cmp=com.whatsapp/.messaging.MessageService}
packageName=com.whatsapp
processName=com.whatsapp
baseDir=/data/app/com.whatsapp-1.apk
dataDir=/data/data/com.whatsapp
app=ProcessRecord{42d19f90 10037:com.whatsapp/u0a10187}
Mais ensuite, ce service disparaît, alors que le processus principal est toujours en cours :
$ adb shell ps | grep wh
u0_a187 10037 215 988084 78996 ffffffff 00000000 S com.whatsapp
Le service ne s'arrête pas en même temps. Je l'ai vu se terminer aussi tôt que 6 minutes après avoir quitté WhatsApp, et aussi tard que 11 minutes. Mais dans la grande majorité des cas, il s'arrête à la 8ème minute.
J'ai examiné attentivement le logcat
au moment de l'arrêt du service avec la requête logcat suivante, qui, je crois, ne fait taire que les choses dont je ne me soucie pas :
adb logcat -v time LightSensor:s LightsService:s SensorService:s SensorManager:s STATUSBAR-BatteryController:s BatteryService:s HeadsetStateMachine:s android.widget.GridLayout:s MP-Decision:s SignalStrength:s McClient:s McDaemon:s QcrilMsgTunnelSocket:s | grep -v ss_tz_mobicore | grep -v ss_daemon
Je n'ai rien vu dans les journaux qui pourrait indiquer ce qui est arrivé au service. S'est-il arrêté ? Quelque chose l'a tué ? Comment puis-je le savoir ?
J'ai pensé que le service avait été interrompu parce que le système d'exploitation manquait de mémoire vive, mais il semble que ce ne soit pas le cas. Voici la RAM au moment de l'arrêt du service :
$ adb shell free -m
total used free shared buffers
Mem: 1821 1587 234 0 75
-/+ buffers: 1511 310
Swap: 399 134 265
Tout en travaillant sur ce problème, j'ai utilisé Titanium Backup pour geler toutes les applications qui pourraient interférer avec le fonctionnement normal de WhatsApp, voici donc les applications que j'ai gelées :
- Greenify
- Amplifier
- XPrivacy
J'ai également désactivé "Per App Hacking", qui est un module Xposed.
Avez-vous des idées sur la façon dont je peux en savoir plus sur la raison pour laquelle MessageService est terminé ?
EDIT 1 : Est-il possible que MessageService soit censé se terminer, et que WhatsApp s'appuie sur GCM pour être informé de la présence de nouveaux messages ?