it-roy-ru.com

Что такое com.google.Android.gms.persistent и почему он всегда использует процессор?

Даже когда больше ничего не происходит, этот системный процесс, похоже, использует 1-2% ресурсов ЦП. В течение дня это разряжает значительное количество батареи, даже когда устройство не использовалось ни для чего. Я не смог соотнести его с какими-либо другими приложениями, потому что даже если они использовали только несколько секунд процессорного времени каждое в течение нескольких часов, этот процесс использует минуты.

Кажется, все еще работает, даже если я:

  • выключить WiFi
  • выключить BlueTooth
  • отключить службы определения местоположения
  • выключите все, кроме самого минимума синхронизации (например, GMail)

Я написал небольшое тестовое приложение, которое отслеживает /proc/<pid>/stat каждые 10 мс и пишет в logcat в любое время com.google.Android.gms.persistent, надеясь, что оно напишет что-то для logcat, что точно определит, какое приложение или другой сервис использует «persistent» для своих сервисов. Я не вижу много, но вот несколько вещей, которые я видел:

InputReader: Reconfiguring input devices.  changes=0x00000010
WifiService: acquireWifiLockLocked: WifiLock{NlpWifiLock type=2 [email protected]}
LocationFilter: Forcing stable location. Original location:Location[...
ConnectivityService: notifyType CAP_CHANGED for NetworkAgentInfo [WIFI () - 246]

Каждая строка выше была в разное время, непосредственно перед (в пределах 10 мс) журнальным сообщением, определяющим использование ЦП com.google.Android.gms.persistent, но без какого-либо четкого указания, связано ли это. К сожалению, ни один из вышеперечисленных отчетов не сообщает о более чем 10 мс времени, потребляемого процессором, и поэтому - даже если он точен при обозначении того, что использует «постоянный», представляет только небольшую часть фактического используемого процессорного времени.

Другие попытки исследовать, что использует этот процесс, предложили различные вещи (например, носимые), которых у меня нет и которые я никогда не подключал к своему устройству.

Что использует этот процесс? Я ищу либо эту информацию напрямую, либо дополнительные способы получения этой информации, аналогичные моим попыткам через logcat.

Обновление: я искал источник (например, com.google.Android.gms.persistent.Java или что-то подобное) на https://Android.googlesource.com без какой-либо удачи. Разве это не часть общедоступного исходного кода? Что действительно странно, так это то, что там даже нет никакой документации, например здесь: https://Android.googlesource.com/platform/frameworks/base/+/33fca8e/docs/html/reference/com/google/Android/gms

Обновление 2: я отключил всю синхронизацию в Настройки -> Учетные записи. Похоже, что это снижает нагрузку на процессор немного больше, а падение заряда батареи, похоже, сократилось - за исключением периодически com.google.Android.gms.persistent, похоже, все еще загружает процессор. 

Моя рабочая теория заключается в том, что у него есть сигнал тревоги, который срабатывает с интервалами приблизительно 60 секунд, независимо от того, нужен он или нет, и этот код проверяет синхронизацию работы, и, если ничего не нужно синхронизировать, он отказывается от правого интервала времени. и позволяет процессору перейти в режим сна. Тем не менее, я на полпути не могу поверить, что такой ужасный дизайн будет использоваться, поскольку все, что разбудит процессор каждую минуту, наверняка разряжает батарею намного быстрее, даже если она просто переходит в спящий режим, и зачем использовать опрос вместо того, чтобы что-то вызывать прерывание для синхронизации в любом случае?

Насколько я могу судить (из-за невозможности его найти), исходный код com.google.Android.gms.persistent не является открытым исходным кодом или доступен в Интернете где-либо. Если я ошибаюсь, я бы принял в качестве ответа на мой вопрос любой ответ, который указывал бы на исходный код, так как я мог бы просмотреть его и определить для себя, почему используется процессор.

31
Michael

Это не вирус или троян. это процесс службы Google Play, который должен правильно запускать Службы Google Play на платформе Android. На самом деле это основной процесс, запускаемый в фоновом режиме, полезно обеспечить поддержку приложений и связать их с Google Play Store, постоянно обновлять их и предоставлять другие функции сервиса Google Play. Что касается использования ЦП, многие другие приложения также работают в фоновом режиме и требуют ресурсов, но они предназначены для того, чтобы обновлять их и предоставлять вам более качественные услуги в реальном времени.

1
Mohit Dixit