Wie kann ich feststellen, dass ich betroffen bin?
Dies ist wahrscheinlich die erste Frage an diejenigen, die mit diesem Thema nicht vertraut sind. Mit Gingerbread (Android 2.3) und höher haben Sie einen Dienst an Bord, der Ihnen hilft, Folgendes herauszufinden: Batteriestatistiken. Obwohl die Hersteller dazu neigen, sie an unterschiedlichen Stellen zu platzieren, finden Sie sie meist unter Einstellungen → Über das Telefon → Akku oder Ähnliches. Außerdem wird eine Liste der Apps angezeigt, die den größten Teil Ihres Akkus verwendet haben. Darüber befindet sich eine kleine Grafik. Tippen Sie darauf und Sie gelangen auf einen Bildschirm, der dem folgenden ähnlich ist:
Screenshot der Batteriestatistik auf Android 2.3
Ich habe einen Screenshot von einem meiner Geräte ausgewählt, der das Problem veranschaulicht. Betrachtet man die unteren beiden blauen Balken ("Aktiv" = Gerät wurde wach gehalten (aktiv), "Bildschirm an" = "Bildschirm an"), so zeigt der am weitesten rechts stehende blaue Balken bei "Aktiv" an, dass ein WakeLock: Gerät trotz dessen beschäftigt war die Tatsache, dass der Bildschirm ausgeschaltet war. Somit können wir ziemlich sicher sein, dass wir ein WakeLock haben - aber wir können nicht sagen, wer es verursacht hat.
Wenn Ihr Gerät diesen Bildschirm nicht anbietet (oder die Balken unten: Ich habe gerade festgestellt, dass z. B. das LG Optimus 4X mit Android 4.0.3 diese Balken abgeschnitten hat), können Sie sie z. B. mit GSam Battery Monitor finden :
Ähnliche Informationen von GSam Battery Monitor - hier sind die genannten "blauen Balken" gelb / orange
Was hat das WakeLock verursacht?
Leider kann diese Frage mit vorinstallierten Apps nicht beantwortet werden (mit Ausnahme einiger benutzerdefinierter ROMs). Aber es gibt Tools, die das können. Der bekannteste Kandidat dafür ist BetterBatteryStats und zeigt uns die Ursache in seinem Teil-Wakelocks- Abschnitt:
Screenshots von BetterBatteryStats
Im ersten Beispiel 2 (entnommen aus der Playstore-Seite der App) war das Ereignis, das die meisten WakeLocks verursachte, ein gewünschtes: Wir möchten nicht, dass die Wiedergabe gestoppt wird, während Sie Musik hören. Das zweite Beispiel 3 (aus einem realen Fall auf einem meiner Geräte) könnte sich als besser herausstellen: Die drei häufigsten Ereignisse werden von derselben App verursacht, für die WakeLock erforderlich war, um den IMAP-Push-Dienst aktiv zu halten.
Eine Alternative zu BetterBatteryStats finden Sie in der Wakelock Detector- App, die in der Antwort von UzumApps erwähnt wurde. Dies scheint insbesondere für Nicht-Techniker einfacher zu sein:
Wakelock-Detektor - Klicken Sie auf das Bild, um es zu vergrößern. (Quelle: Google Play )
Was kann getan werden?
Wenn der Fall so klar ist wie im zweiten Beispiel im vorherigen Abschnitt, ist die Aktion ziemlich offensichtlich - zumindest in meinem Fall: Ich muss nicht sofort informiert werden, wenn eine Mail eintrifft. Eine Verzögerung von 30 Minuten ist absolut akzeptabel. Also ging ich in die Mail-App, deaktivierte IMAP-Push (siehe auch: Push-E-Mail ) und wechselte stattdessen zu einem 30-minütigen Abfrageintervall. WakeLocks sind nicht ganz verschwunden, sondern deutlich gesunken - die Akkulaufzeit hat sich merklich verbessert.
Dann ist da noch der Fall, der in der Frage selbst erwähnt wird: Eine App, die sich schlecht verhält und ihr WakeLock nicht veröffentlicht. Konfrontieren Sie den Entwickler mit Ihren Ergebnissen und fragen Sie nach einer Lösung. Wenn er liefert: Problem gelöst. Wenn nicht: Es gibt fast immer eine alternative App.
Was ist, wenn es das Android-System selbst ist?
Ja, manchmal sieht es so aus: 98% oder mehr werden von einem Android-Dienst verbraucht. Oh, wenn es 98% sind, heißt der Kandidat in den meisten Fällen LocationManagerService . Bösewicht, der uns ausspioniert? Nicht unbedingt. In diesem speziellen Fall ist der aufgeführte "Bösewicht" nicht einmal schuldig - zumindest nicht direkt. Hier ist es eine andere App, die zu häufig den aktuellen Standort abfragt. Auf Setera.org gibt es einen ausgezeichneten Artikel dazu: Feststellen des Batterieverbrauchs von Android LocationManagerService . Um eine Zusammenfassung zu geben: Es verwendet Androiddumpsys
Feature (erfordert root!), um einen Systemstatus zu sichern, und ermöglicht es Ihnen, die für den LocationManagerService eingerichteten Listener zu untersuchen. Ein genauerer Blick auf ihre Konfiguration zeigt, welche ständig nach Ortsinformationen "hämmern" (manche tun dies permanent, dh ohne Unterbrechung). Da die ID der App zusammen mit dem technischen Namen der App an einer anderen Stelle im Dump aufgeführt ist, können Sie sie dennoch identifizieren und entsprechende Maßnahmen ergreifen.
Und was ist mit UFOs?
Leider gibt es solche: Apps, die ein WakeLock registriert - und dann beendet haben, ohne es freizugeben. Übrig bleiben * Unbenutzte veraltete Dateien * - WakeLocks, die nicht mehr verwendet werden können. Es ist also nicht möglich, die App einfach in den Vordergrund zu stellen und neu zu konfigurieren oder ihre WakeLocks freizugeben.
Hier ist mir nur ein Neustart bekannt - und ich hätte gerne eine bessere Lösung. Wenn Sie die App für schuldige Personen kennen, sind die entsprechenden Schritte dieselben wie oben: Informieren Sie den Entwickler, besorgen Sie sich eine Lösung - oder ersetzen Sie die App. Aber über das aktuelle WakeLock loswerden? Vielleicht kann jemand anderes eine bessere Alternative zum Neustart bieten?
Gibt es einige empfohlene weitere Lesungen?
Sicher. Eines möchte ich später noch hinzufügen:
/sys/power/wake_lock
" Weise mit PowerManager und PowerManager.WakeLock erstellt haben und geben Sie es frei, auch wenn Ihr Prozess getötet wurde ...