どうすれば影響を受けているかわかりますか?
これはおそらく、このトピックに精通していない人にとって最初の質問です。Gingerbread(Android 2.3)以上を使用すると、バッテリー統計情報を把握するのに役立つサービスを利用できます。メーカーはさまざまなポイントに配置する傾向がありますが、ほとんどの場合は[設定]→[携帯電話について]→[バッテリー]などにあり、ほとんどのバッテリーを使用したアプリのリストが表示されます。その上に小さなグラフがあります。それをタップすると、次のような画面が表示されます。
Android 2.3のバッテリー統計のスクリーンショット
問題を示すスクリーンショットをデバイスの1つから選択しました。下の2つの青いバー(「Aktiv」=デバイスは起動状態(アクティブ)、「Bildschirm an」=「スクリーンオン」)を見ると、「Aktiv」の右端の青いバーはWakeLockを示します。画面がオフになったという事実。したがって、これにより、WakeLockを持っていることを確信できますが、誰がそれを引き起こしたのかはわかりません。
お使いのデバイスがこの画面を提供しない場合(または下部のバー:Android 4.0.3を実行しているLG Optimus 4Xがこれらのバーを切断したなど)、GSam Battery Monitorを使用して見つけることができます:
GSam Battery Monitorからの同様の情報-ここで言及された「青いバー」は黄色/オレンジ色です
WakeLockの原因は何ですか?
残念ながら、プリインストールされたアプリを使用してこの質問に答えることはできません(一部のカスタムROMを除く)。しかし、できるツールはあります。最もよく知られている候補はBetterBatteryStatsであり、その部分的なwakelocksセクションで原因を示しています。
BetterBatteryStatsのスクリーンショット
最初の例2(アプリのプレイストアページから取得)では、ほとんどのWakeLockを引き起こすイベントは望ましいものでした。音楽を聴いている間、再生を停止させたくありません。したがって、2番目の例3(私のデバイスの1つの実際のケースから取られた)の方が良いかもしれません:一番上の3つのイベントは、同じアプリによって引き起こされます。
BetterBatteryStatsの代替品については、UzumAppsの回答で言及されているWakelock Detectorアプリをチェックしてください。これは、特に技術者以外の方が扱いやすいようです。
Wakelock Detector-画像をクリックして拡大します。(出典:Google Play)
何ができますか?
前のセクションの2番目の例のようにケースが明確な場合、アクションは非常に明白です-少なくとも私の場合:メールが到着したときにすぐに通知する必要はありません。30分の遅延は絶対に許容できます。そこで、メールアプリにアクセスし、IMAPプッシュを無効にし(「プッシュメール」も参照)、代わりに30分のポーリング間隔に切り替えました。WakeLocksは完全に消えたわけではありませんが、著しく低下しました-バッテリー寿命は著しく改善されました。
次に、質問自体で言及されているケースがあります:WakeLockをリリースしない、動作の悪いアプリです。開発者に調査結果を提示し、修正を依頼します。彼が提供する場合:問題は解決しました。そうでない場合:ほとんどの場合、代替アプリが利用可能です。
Androidシステム自体の場合はどうなりますか?
ええ、それは時々それのように見えます:98%以上がAndroidサービスによって消費されています。ああ、98%の場合、ほとんどの場合、候補の名前はLocationManagerServiceです。私たちをスパイしている悪人?必ずしも。この特別な場合、リストされている「悪者」は無罪ですらありません。少なくとも直接ではありません。これは、現在の場所を頻繁に要求する別のアプリです。これに関するSetera.orgの優れた記事があります:Android LocationManagerService battery drainの特定。要約をするには:Androidのdumpsys
システム状態をダンプする機能(rootが必要です!)を使用して、LocationManagerService用に確立されたリスナーを調査できます。構成を詳しく見ると、ロケーション情報のために常に「ハンマー」になっていることがわかります(一部は永続的に、つまり休憩なしで行われます)。アプリのIDは、アプリの技術名とともにダンプ内の別の場所に表示されるため、引き続き識別して適切なアクションを実行できます。
そしてUFOはどうですか?
残念ながら、次のようなものがあります。WakeLockを登録したアプリは、リリースせずに終了しました。残っているのは* Unused F *** ing Obsoletes *-WakeLocksが使用しないために保持されていることです。そのため、単にアプリをフォアグラウンドにして再構成したり、WakeLocksをリリースしたりすることはできません。
ここで私に知られている唯一の解決策は再起動です-そして、私はより良い解決策を持ちたいです。もちろん、有罪アプリを知っている場合、それに関連する手順は上記と同じです。開発者に通知し、修正プログラムを入手し、またはアプリを交換します。しかし、現在の WakeLock を取り除くことについてはどうでしょうか?たぶん他の誰かが再起動のより良い代替手段を提供できるでしょうか?
推奨されるさらなる参考資料はありますか?
はい。とりあえず、あとで追加します。
/sys/power/wake_lock
が、PowerManagerとPowerManager.WakeLockを使用して「正しい」方法で作成した場合、サービスは両方とも実際のウェイクロックを保持しますプロセスが