Teil-Wakelocks sind ein Mechanismus in der PowerManager
API, mit dem Entwickler die CPU aktiv halten können, nachdem das Display eines Geräts ausgeschaltet wurde (entweder aufgrund eines System-Timeouts oder weil der Nutzer den Ein-/Aus-Schalter gedrückt hat). Ihre App erhält einen partiellen Wake Lock, indem sie acquire()
mit dem Flag PARTIAL_WAKE_LOCK
aufruft oder andere APIs verwendet, die Wake Locks erhalten.
Ein partieller Wake Lock bleibt hängen, wenn er lange Zeit gehalten wird, während Ihre App im Hintergrund ausgeführt wird (kein Teil Ihrer App ist für den Nutzer sichtbar). Dieser Zustand entlädt den Akku des Geräts, da das Gerät nicht in den Energiesparmodus wechseln kann. Teilweise Wake Locks sollten nur bei Bedarf verwendet und freigegeben werden, sobald sie nicht mehr benötigt werden.
Wenn Ihre App einen teilweise aktivierten Wake Lock hat, der nicht deaktiviert wird, können Sie das Problem mithilfe der Informationen auf dieser Seite diagnostizieren und beheben.
Problem erkennen
Es ist nicht immer offensichtlich, dass die Teil-Wakelocks Ihrer App hängen. Wenn Sie Ihre App bereits veröffentlicht haben, können Sie das Problem mithilfe von Android Vitals erkennen.
Android Vitals
Android Vitals kann Ihnen helfen, die Leistung Ihrer App zu verbessern, indem Sie über die Play Console benachrichtigt werden, wenn in Ihrer App teilweise Wake Locks auftreten, die nicht freigegeben werden. Android Vitals meldet Teil-Wakelocks als hängend, wenn innerhalb von 24 Stunden mindestens ein einstündiger Teil-Wakelock im Hintergrund auftritt.
Die Anzahl der angezeigten Akku-Sitzungen ist ein Gesamtwert für alle gemessenen Nutzer der App. Informationen dazu, wie Google Play Android Vitals-Daten erhebt, finden Sie in der Play Console-Dokumentation.
Wenn Sie wissen, dass Ihre App teilweise Wake Locks belegt, müssen Sie das Problem beheben.
Problem beheben
Da Wake Locks den Geräteakku entladen können, sollten Sie sie nur verwenden, wenn es keine Alternative gibt. In der Dokumentation Die richtige API auswählen, um das Gerät aktiv zu halten finden Sie Informationen zur besten Lösung für Ihre App.
Wenn Sie einen Wake Lock verwenden müssen, halten Sie sich an die Best Practices für Wake Locks, damit Ihre Wake Locks die Effizienz des Geräts nicht beeinträchtigen. Achten Sie insbesondere darauf, dass jedes erworbene Gerät freigegeben wird, und geben Sie die Sperre so schnell wie möglich auf.
Nachdem Sie das Problem im Code behoben haben, können Sie Ihre Korrekturen mit lokalen Debugging-Tools für Wake Locks überprüfen.
Siehe auch
Empfehlungen für dich
- Hinweis: Linktext wird angezeigt, wenn JavaScript deaktiviert ist.
- Eingefrorene Frames
- Benchmarks in Continuous Integration ausführen
- Baseline-Profile ohne Macrobenchmark erstellen und messen