Hängende teilweise Wakelocks

Teilweise Sperren für das Aufwecken sind ein Mechanismus in der PowerManager API, mit dem Entwickler die CPU laufen lassen können, nachdem das Display eines Geräts ausgeschaltet wurde, sei es aufgrund einer Systemzeitüberschreitung oder weil der Nutzer die Ein-/Aus-Taste gedrückt hat. Ihre App kann eine teilweise Aktivierungssperre erwerben, indem Sie acquire() mit dem Flag PARTIAL_WAKE_LOCK aufrufen oder andere APIs verwenden, die Aktivierungssperren erwerben. Eine teilweise Aktivierungssperre hängt, wenn sie über einen längeren Zeitraum aktiviert bleibt, während Ihre App im Hintergrund ausgeführt wird (kein Teil Ihrer App ist für den Nutzer sichtbar). Dadurch wird der Akku des Geräts entladen, da es nicht in einen niedrigeren Energiesparmodus wechseln kann. Teilweise Sperren sollten nur bei Bedarf verwendet und sobald nicht mehr erforderlich aufgehoben werden.

Wenn in Ihrer App eine partielle Aktivierungssperre aktiv ist, können Sie anhand der Anleitung auf dieser Seite das Problem diagnostizieren und beheben.

Problem erkennen

Sie wissen möglicherweise nicht immer, dass die Teil-Wakelocks Ihrer App hängen. Wenn Sie Ihre App bereits veröffentlicht haben, kann Android Vitals Sie auf das Problem aufmerksam machen.

Android Vitals

Mit Android Vitals können Sie die Leistung Ihrer App verbessern, da Sie über die Play Console benachrichtigt werden, wenn Ihre App nicht vollständig aus dem Ruhemodus aufwacht. In Android Vitals werden Teil-Wakelocks als hängend gemeldet, wenn innerhalb von 24 Stunden mindestens ein einstündiger Teil-Wakelock im Hintergrund auftritt.

Die angezeigte Anzahl der Akkusitzungen ist eine Gesamtzahl für alle gemessenen Nutzer der App. Informationen dazu, wie Google Play Android Vitals-Daten erhebt, finden Sie in der Play Console-Dokumentation.

Sobald Sie wissen, dass Ihre App partielle Wakelocks aktiviert hat, müssen Sie das Problem beheben.

Problem beheben

Da Aktivierungssperren den Akku des Geräts belasten können, sollten Sie sie nicht verwenden, wenn es eine Alternative gibt. In der Dokumentation Die richtige API auswählen, um das Gerät aktiv zu halten finden Sie Informationen dazu, wie Sie die beste Lösung für Ihre App finden.

Wenn Sie einen Wakelock verwenden müssen, folgen Sie den Best Practices für Wakelocks, damit die Geräteeffizienz nicht beeinträchtigt wird. Achten Sie insbesondere darauf, dass jedes von Ihnen erworbene Gerät entsperrt ist, und heben Sie die Sperre so schnell wie möglich auf.

Nachdem Sie das Problem im Code behoben haben, können Sie die Korrekturen mithilfe von lokalen Tools zur Fehlerbehebung für Wakelocks überprüfen.

Siehe auch