Die richtige API auswählen, damit das Gerät aktiv bleibt
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
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.
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 oder DownloadManager verwenden, holt sich das System oder die Bibliothek einen Wakelock, der Ihrer App zugeordnet wird.
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 Sie Sensor.isWakeUpSensor ein.
Alle Inhalte und Codebeispiele auf dieser Seite unterliegen den Lizenzen wie im Abschnitt Inhaltslizenz beschrieben. Java und OpenJDK sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.
Zuletzt aktualisiert: 2025-07-26 (UTC).
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Benötigte Informationen nicht gefunden","missingTheInformationINeed","thumb-down"],["Zu umständlich/zu viele Schritte","tooComplicatedTooManySteps","thumb-down"],["Nicht mehr aktuell","outOfDate","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Problem mit Beispielen/Code","samplesCodeIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-07-26 (UTC)."],[],[],null,["# Choose the right API to keep the device awake\n\nWhen the user leaves their Android-powered device idle, it quickly goes into the\nsuspend state to avoid draining the battery. However, there are times when an\napp needs to prevent the CPU from going to the suspend state. In some cases, the\napp may need to keep the screen on while it's working. In other cases, the app\ndoesn't need to keep the screen on but still needs the CPU to be active.\n\nThe approach you take depends on the needs of your app. However, a general rule\nis that you should use the most lightweight approach possible, to minimize your\napp's impact on system resources. This document helps you choose the correct\nAndroid technology for your situation.\n| **Note:** You may be familiar with **wake locks**. An app can set a wake lock to keep the device from suspending. However, using a wake lock can quickly drain the device battery. You should only use a wake lock if there's no other option that will do what you need. If you do use a wake lock, you should release it as soon as possible.\n\nChoose the right technology\n---------------------------\n\nThe best option for keeping your device awake depends on your app's needs. This\nsection helps you choose the right approach.\n\n- Does your app need to keep the screen on?\n - If **Yes** , see [Keep the screen on](/develop/background-work/background-tasks/awake/screen-on). There may be a special-purpose API that does what you need; for example, if you're implementing a phone-call UI, you can use the [Android telecom\n framework](/reference/android/telecom/package-summary), which keeps the screen on when needed. If there's no special purpose API for your situation, you can use the `keepScreenOn` API.\n- Is your app running a foreground service, and you need to keep the device awake when screen is off while the service is running?\n - If **No** , you do not need to keep the device awake. If the user is actively interacting with the app, the device will stay awake. If the user is not interacting with your app and you are not running a foreground service, you should let the device go into suspend mode when necessary. If you just need to make sure some work gets done while the user is away from the app, see the [background tasks](/develop/background-work/background-tasks) documentation to find the best option.\n - If **Yes** , first confirm that you actually need to use a foreground service. Depending on your situation, there may be some special-purpose API you can use to accomplish your need instead of a foreground service. You can find information about these [in the Foreground Service\n documentation](/develop/background-work/services/fgs/service-types). For example, if you need to track the user's location, you might be able to use the [geofencing API](/develop/sensors-and-location/location/geofencing) instead of a `location` foreground service.\n- Would it be detrimental to the user experience if the device suspends while the foreground service is running and the device screen is off? (For example, if you're using a foreground service to update notifications, it wouldn't be a bad user experience if the device is suspended.)\n - If **No**, do not use a wakelock. The action resumes automatically once the user engages with their device, which takes it out of suspend.\n - If **Yes** , you might need to [use a wake lock](/develop/background-work/background-tasks/awake/wakelock). However, you should still check to see if you're already using an API or doing an action that declares a wake lock on your behalf, as discussed in [Actions that keep the device awake](#actions-keep).\n\nActions that keep the device awake\n----------------------------------\n\nIf your app is doing any of the following, you don't need to set a wake lock\nyourself. The following actions and APIs all keep the device awake for you.\n\n- If you're playing audio, the audio system sets and manages a wake lock for you; you don't need to do it yourself.\n- If you're using task scheduling APIs or libraries such as [WorkManager](/develop/background-work/background-tasks/persistent), [`JobScheduler`](/reference/android/app/job/JobScheduler), or [`DownloadManager`](/reference/android/app/DownloadManager), the system or library acquires a wake lock that is attributed to your app.\n- If you're using [Media3 ExoPlayer](/media/media3/exoplayer), you can use [`ExoPlayer.setWakeMode()`](/reference/androidx/media3/exoplayer/ExoPlayer#setWakeMode(int)) to have the player set a wake lock for you.\n- Certain device sensors are wake-up sensors; you can use [`SensorManager`](/reference/android/hardware/SensorManager) to have those sensors wake up the device when they have data to report. To check if a sensor is a wake-up sensor, call [`Sensor.isWakeUpSensor`](/reference/android/hardware/Sensor#isWakeUpSensor())).\n\nSee also\n--------\n\n- [Use wake locks](/develop/background-work/background-tasks/awake/wakelock)\n- [Keep the screen on](/develop/background-work/background-tasks/awake/screen-on)"]]