web-dev-qa-db-ja.com

com.google.Android.gms.persistentとは何ですか。なぜCPUを常に使用するのですか?

他に何も起きていない場合でも、このシステムプロセスはCPUの1〜2%を安定して使用しているようです。これにより、デバイスが何にも使用されなかった場合でも、1日の間にかなりの量のバッテリーが消費されます。このプロセスは数時間にわたってそれぞれ数秒のCPU時間しか使用していない場合でも、このプロセスは分を使用しているため、他のアプリと関連付けることはできませんでした。

たとえ私が:

  • wiFiをオフにする
  • blueToothをオフにする
  • 位置情報サービスをオフにする
  • 最小限の同期(GMailなど)を除くすべてをオフにします

私は/proc/<pid>/statを10msごとに監視し、いつでもlogcatに書き込むcom.google.Android.gms.persistentの小さなテストアプリを作成しました。そのサービス。私はあまり見ていませんが、ここに私が見たいくつかのものがあります:

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

上記の各行は、com.google.Android.gms.persistentによるCPU使用率を検出するログメッセージの直前(10ミリ秒以内)に異なる時間にありましたが、関連があるかどうかは明確に示されていません。残念ながら、上記のいずれも10ミリ秒を超えるCPU時間を報告していないため、「永続的」を使用していることを正確に示しても、実際に使用されているCPU時間のごく一部にすぎません。

このプロセスを使用するものを調査する他の試みは、私が持っておらず、デバイスに接続したことがないさまざまなもの(ウェアラブルなど)を示唆しています。

このプロセスを使用しているのは何ですか?私はこの情報を直接探しているか、logcatを介した試みと同様にこの情報を推測できる追加の方法を探しています。

更新: https://Android.googlesource.com でソース(例:com.google.Android.gms.persistent.Javaまたはそのようなもの)を探しています。これは公開ソースコードの一部ではありませんか?本当に奇妙なのは、ドキュメントがないように見えることです。ここ: https://Android.googlesource.com/platform/frameworks/base/+/33fca8e/docs/html/reference/com/google/Android/gms

更新2:[設定]-> [アカウント]ですべての同期を無効にしました。これにより、CPUの使用量が少し減り、バッテリーの低下がクロールに落ちたように見えます-ただし、定期的にcom.google.Android.gms.persistentがCPUのバーストを起こすようです。

私の現在の動作理論は、必要かどうかに関係なく約60秒間隔で起動するアラームがあり、そのコードは同期作業をチェックしており、同期する必要がない場合はタイムスライスを放棄することです離れてCPUをすぐにスリープさせます。ただし、CPUを毎分起動するものはすべて、スリープ状態に戻っただけでもバッテリーを急速に消費するため、ポーリングが使用されるので、このような恐ろしいデザインが使用されるとは中途半端ですとにかく同期のために何かを駆動する割り込みの代わりに?

私が知る限り(見つけることができないため)、com.google.Android.gms.persistentのソースコードはオープンソースではないか、どこからでもオンラインで入手できません。私が間違っている場合、質問への回答として、ソースコードを参照し、CPU使用率を自分で判断できるようにソースコードを指す回答を受け入れます。

35
Michael

ウイルスやトロイの木馬ではありません。 Android PlatformでGoogle Play Servicesを適切に実行する必要があるのはGoogle Playサービスプロセスです。実際、それはバックグラウンドで実行されるメインプロセスです。アプリをサポートし、Google Playストアとリンクして、それらを最新の状態に保ち、他のGoogle Playサービス機能を提供すると便利です。 CPU使用率に関しては、他の多くのアプリもバックグラウンドで実行され、リソースを消費しますが、それらを更新し、より良いリアルタイムサービスを提供するためです。

1
Mohit Dixit