Wenn der Nutzer sein Android-Gerät inaktiv lässt, wechselt es schnell in den Ruhemodus, um den Akku zu schonen. Es gibt jedoch Situationen, in denen eine App verhindern muss, dass die CPU in den Ruhemodus wechselt. In einigen Fällen muss die App das Display während der Ausführung eingeschaltet lassen. In anderen Fällen muss die App den Bildschirm nicht eingeschaltet lassen, aber die CPU muss aktiv sein.
Welchen Ansatz Sie wählen, hängt von den Anforderungen Ihrer App ab. Generell sollten Sie jedoch den möglichst schlanken Ansatz verwenden, um die Auswirkungen Ihrer App auf die Systemressourcen zu minimieren. In diesem Dokument erfahren Sie, wie Sie die richtige Android-Technologie für Ihre Situation auswählen.
Die richtige Technologie auswählen
Welche Option am besten geeignet ist, hängt von den Anforderungen Ihrer App ab. In diesem Abschnitt erfahren Sie, wie Sie den richtigen Ansatz wählen.
- Muss der Bildschirm Ihrer App eingeschaltet bleiben?
- Wenn Ja, lesen Sie den Hilfeartikel Display eingeschaltet lassen. Möglicherweise gibt es eine spezielle API, die Ihren Anforderungen entspricht. Wenn Sie beispielsweise eine Benutzeroberfläche für Anrufe implementieren, können Sie das Android Telecom Framework verwenden, das das Display bei Bedarf eingeschaltet hält. Wenn es für Ihre Situation keine spezielle API gibt, können Sie die
keepScreenOn
API verwenden.
- Wenn Ja, lesen Sie den Hilfeartikel Display eingeschaltet lassen. Möglicherweise gibt es eine spezielle API, die Ihren Anforderungen entspricht. Wenn Sie beispielsweise eine Benutzeroberfläche für Anrufe implementieren, können Sie das Android Telecom Framework verwenden, das das Display bei Bedarf eingeschaltet hält. Wenn es für Ihre Situation keine spezielle API gibt, können Sie die
- Führt Ihre App einen Dienst im Vordergrund aus und Sie müssen das Gerät eingeschaltet lassen, wenn das Display aus ist, während der Dienst ausgeführt wird?
- Wenn Nein ausgewählt ist, muss das Gerät nicht eingeschaltet bleiben. Wenn der Nutzer aktiv mit der App interagiert, bleibt das Gerät aktiv. Wenn der Nutzer nicht mit Ihrer App interagiert und Sie keinen Dienst im Vordergrund ausführen, sollten Sie das Gerät bei Bedarf in den Ruhemodus versetzen. Wenn Sie nur dafür sorgen möchten, dass bestimmte Aufgaben ausgeführt werden, während der Nutzer nicht in der App ist, finden Sie in der Dokumentation zu Hintergrundaufgaben die beste Option.
- Wenn Ja, prüfen Sie zuerst, ob Sie tatsächlich einen Dienst im Vordergrund verwenden müssen. Je nach Situation gibt es möglicherweise eine API für spezielle Zwecke, die Sie anstelle eines Dienstes im Vordergrund verwenden können.
Informationen dazu finden Sie in der Dokumentation zu Diensten im Vordergrund. Wenn Sie beispielsweise den Standort des Nutzers verfolgen möchten, können Sie anstelle eines
location
-Dienstes im Vordergrund die Geofencing API verwenden.
- Wäre es schädlich für die Nutzerfreundlichkeit, wenn das Gerät in den Ruhemodus versetzt wird, während der Dienst im Vordergrund ausgeführt wird und das Display des Geräts ausgeschaltet ist? Wenn Sie beispielsweise einen Dienst im Vordergrund verwenden, um Benachrichtigungen zu aktualisieren, ist es nicht schlimm, wenn das Gerät in den Ruhemodus versetzt wird.
- Wenn Nein, verwenden Sie kein Wakelock. Die Aktion wird automatisch fortgesetzt, sobald der Nutzer mit seinem Gerät interagiert und es aus dem Ruhemodus aufweckt.
- Wenn Ja, müssen Sie möglicherweise eine Aktivierungssperre verwenden. Sie sollten jedoch prüfen, ob Sie bereits eine API verwenden oder eine Aktion ausführen, die in Ihrem Namen eine Wakelock deklariert, wie im Abschnitt Aktionen, die das Gerät inaktiv halten beschrieben.
Aktionen, die das Gerät aktiv halten
Wenn Ihre App eine der folgenden Aktionen ausführt, müssen Sie kein Wakelock selbst festlegen. Die folgenden Aktionen und APIs halten das Gerät für Sie aktiv.
- Wenn Sie Audio abspielen, legt das Audiosystem eine Wecksperre für Sie fest und verwaltet sie. Sie müssen das nicht selbst tun.
- Wenn Sie APIs oder Bibliotheken zur Aufgabenplanung wie WorkManager,
JobScheduler
oderDownloadManager
verwenden, holt das System oder die Bibliothek in Ihrem Namen einen Wakelock ab. - Wenn du Media3 ExoPlayer verwendest, kannst du mit
ExoPlayer.setWakeMode()
festlegen, dass der Player eine Wecksperre für dich festlegt. - Bestimmte Gerätesensoren sind Wecksensoren. Sie können
SensorManager
verwenden, um das Gerät über diese Sensoren zu aktivieren, wenn Daten gemeldet werden müssen. Wenn Sie prüfen möchten, ob ein Sensor ein Wecksensor ist, geben SieSensor.isWakeUpSensor
ein.