Die richtige API auswählen, damit das Gerät aktiv bleibt

Wenn ein Nutzer sein Android-Gerät nicht verwendet, wechselt es schnell in den Ruhezustand, um den Akku zu schonen. Es gibt jedoch Situationen, in denen eine App verhindern muss, dass die CPU in den Ruhezustand wechselt. In einigen Fällen muss das Display möglicherweise eingeschaltet bleiben, während die App ausgeführt wird. In anderen Fällen muss die App den Bildschirm nicht eingeschaltet lassen, aber die CPU muss aktiv bleiben.

Welchen Ansatz Sie wählen, hängt von den Anforderungen Ihrer App ab. Als allgemeine Regel gilt jedoch, dass Sie den leichtgewichtigsten Ansatz verwenden sollten, 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

Die beste Option, um das Gerät aktiv zu halten, hängt von den Anforderungen Ihrer App ab. In diesem Abschnitt erfahren Sie, wie Sie den richtigen Ansatz auswählen.

Flussdiagramm, in dem zusammengefasst wird, wie Sie den richtigen Ansatz wählen, um das Gerät aktiv zu halten. Der Inhalt des Flussdiagramms wird im folgenden Text erläutert.

  • Muss der Bildschirm für Ihre App eingeschaltet bleiben?
    • Wenn Ja, siehe Display eingeschaltet lassen. Möglicherweise gibt es eine spezielle API, die Ihren Anforderungen entspricht. Wenn Sie beispielsweise eine Benutzeroberfläche für Telefonanrufe implementieren, können Sie das Android Telecom Framework verwenden, das den Bildschirm bei Bedarf eingeschaltet lässt. Wenn es für Ihre Situation keine API für einen bestimmten Zweck gibt, können Sie die keepScreenOn API verwenden.
  • Wird in Ihrer App ein Dienst im Vordergrund ausgeführt und muss das Gerät aktiv bleiben, wenn der Bildschirm ausgeschaltet ist, während der Dienst ausgeführt wird?
    • Wenn Nein, müssen Sie das Gerät nicht aktiv halten. Wenn der Nutzer aktiv mit der App interagiert, bleibt das Gerät aktiv. Wenn der Nutzer nicht mit Ihrer App interagiert und Sie keinen Vordergrunddienst ausführen, sollten Sie das Gerät bei Bedarf in den Ruhezustand versetzen. Wenn Sie nur sicherstellen möchten, dass bestimmte Aufgaben ausgeführt werden, während der Nutzer die App nicht verwendet, finden Sie in der Dokumentation zu Hintergrundaufgaben die beste Option.
    • Wenn Ja, bestätigen Sie zuerst, dass Sie tatsächlich einen Vordergrunddienst benötigen. Je nach Situation gibt es möglicherweise eine spezielle API, die Sie anstelle eines Vordergrunddienstes verwenden können. Informationen dazu finden Sie in der Dokumentation zu Vordergrunddiensten. Wenn Sie beispielsweise den Standort des Nutzers erfassen müssen, können Sie möglicherweise die Geofencing API anstelle eines location-Vordergrunddienstes verwenden.
  • Wäre es für die Nutzerfreundlichkeit nachteilig, wenn das Gerät in den Ruhezustand versetzt wird, während der Vordergrunddienst ausgeführt wird und das Display des Geräts ausgeschaltet ist? Wenn Sie beispielsweise einen Vordergrunddienst zum Aktualisieren von Benachrichtigungen verwenden, ist es nicht schlecht für die Nutzer, wenn das Gerät in den Ruhezustand versetzt wird.
    • Wenn Nein, verwenden Sie keinen Wakelock. Die Aktion wird automatisch fortgesetzt, sobald der Nutzer das Gerät wieder verwendet und es dadurch aus dem inaktiven Zustand geholt wird.
    • Wenn Ja, müssen Sie möglicherweise einen Wake Lock verwenden. Sie sollten jedoch trotzdem prüfen, ob Sie bereits eine API verwenden oder eine Aktion ausführen, die in Ihrem Namen einen Wake Lock deklariert, wie im Abschnitt Aktionen, die das Gerät aktiv halten beschrieben.

Aktionen, die das Gerät aktiv halten

Wenn Ihre App eine der folgenden Aktionen ausführt, müssen Sie kein Wake Lock festlegen. Die folgenden Aktionen und APIs sorgen dafür, dass das Gerät nicht in den Ruhemodus wechselt.

  • Wenn Sie Audio abspielen, richtet das Audiosystem für Sie einen Wake Lock ein und verwaltet ihn. Sie müssen das nicht selbst tun.
  • Wenn Sie APIs oder Bibliotheken zur Aufgabenplanung wie WorkManager, JobScheduler oder DownloadManager verwenden, ruft das System oder die Bibliothek einen Wakelock ab, der Ihrer App zugeordnet ist.
  • Wenn Sie Media3 ExoPlayer verwenden, können Sie mit ExoPlayer.setWakeMode() festlegen, dass der Player einen Wake Lock für Sie festlegt.
  • Bestimmte Gerätesensoren sind Wake-up-Sensoren. Sie können SensorManager verwenden, damit diese Sensoren das Gerät aktivieren, wenn sie Daten zu melden haben. Rufen Sie Sensor.isWakeUpSensor auf, um zu prüfen, ob ein Sensor ein Wake-up-Sensor ist.
  • Wenn Sie einen Wecker stellen, wird das Gerät geweckt, wenn der Wecker klingelt, auch wenn Ihre App nicht ausgeführt wird.

Siehe auch