Пару дней назад я заметил, что больше не получаю сообщения WhatsApp, пока не запущу приложение вручную, когда все ожидающие сообщения доставляются сразу.
Я начал свое расследование с мониторинга com.whatsapp.messaging.MessageService
в диспетчере приложений.
Вот как это выглядит сначала, после выхода из WhatsApp:
А вот как это выглядит через несколько минут:
Похоже, MessageService
либо вышел, либо он был прекращен. Чтобы убедиться в этом, я проверил с помощью adb. Сначала я вижу службу:
$ 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}
Но потом этот сервис исчезает, хотя основной процесс все еще запущен:
$ adb shell ps | grep wh
u0_a187 10037 215 988084 78996 ffffffff 00000000 S com.whatsapp
Услуга не прекращается одновременно. Я видел, как его убивали уже через 6 минут после выхода из WhatsApp и поздно — через 11 минут. Но в подавляющем большинстве случаев он обрывается где-то на 8-й минуте.
Я внимательно изучил logcat
момент прекращения службы с помощью следующего запроса logcat, который, как я полагаю, отключает только то, что меня не волнует:
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
Мне не удалось увидеть в логах ничего, что намекало бы на то, что случилось с сервисом. Это бросило? Что-то убило? Как я могу узнать?
Я подумал, что, возможно, служба была остановлена из-за того, что у ОС было мало оперативной памяти, но, похоже, это не так. Вот оперативная память на момент завершения:
$ adb shell free -m
total used free shared buffers
Mem: 1821 1587 234 0 75
-/+ buffers: 1511 310
Swap: 399 134 265
Работая над этой проблемой, я использовал Titanium Backup, чтобы заморозить все приложения, которые могут помешать нормальной работе WhatsApp, поэтому я заморозил следующие приложения:
Я также отключил «Взлом для каждого приложения», который является модулем Xposed.
Любые идеи о том, как я могу узнать больше о том, почему MessageService прекращается?
РЕДАКТИРОВАТЬ 1 : возможно ли, что MessageService должен быть прекращен, и что WhatsApp полагается на GCM, чтобы получать уведомления о появлении новых сообщений?
У меня была точно такая же проблема, как у вас. Я также вижу, что служба MessageService закрывается примерно через 10 минут. После того, как служба убита, сообщения принимаются только при открытии приложения. Сегодня, когда искал эту проблему, случайно нашел эту тему, которую вы разместили всего 3 часа назад.
Я использую новый телефон, на котором я установил Cyanogenmod 13. Я уже пытался изменить несколько настроек, связанных с использованием батареи, оптимизацией памяти и т. д., но безрезультатно.
Я начал использовать этот телефон 2 дня назад, и с тех пор возникает проблема с WhatsApp. Завтра попробую удалить и переустановить whatsapp из Play Маркета, так как этот был восстановлен из резервной копии Titanium Backup. Я видел на форуме кого-то, кто решил подобную проблему, сделав это ... он также восстановил из резервной копии TiBu и столкнулся с такой проблемой.
Кстати, ваша теория о GCM, кажется, указывает на правильное направление - в телефоне моей жены служба MessageService также убивается примерно через 10 минут, однако у нее нет никаких задержек в получении сообщений WhatsApp - так что, возможно, это действительно полагается на GCM для этого.
Дайте мне знать, если вы продвинетесь в расследовании или придете к решению. Дайте мне также знать, если я могу помочь вам с чем-нибудь еще.
больной близнец
Валь Блант