Ustawianie blokady aktywacji
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Możesz ustawić blokadę wybudzania, aby tymczasowo utrzymać urządzenie w stanie aktywności.
Zależności
Aby ustawić blokadę wybudzania, aplikacja musi mieć uprawnienie WAKE_LOCK
.
Dodaj uprawnienia do pliku manifestu aplikacji:
<uses-permission android:name="android.permission.WAKE_LOCK" />
Tworzenie i uzyskiwanie blokady wybudzania
Aby uzyskać blokadę wybudzania, wykonaj te czynności:
Wywołaj funkcję Call PowerManager.newWakeLock()
, aby utworzyć blokadę wybudzania.
Spowoduje to utworzenie i skonfigurowanie obiektu PowerManager.WakeLock
, ale nie zapobiegnie uśpieniu urządzenia.
Jeśli chcesz, aby urządzenie nie przechodziło w stan uśpienia, wywołaj metodę acquire()
obiektu blokady wybudzania.
Jeśli na przykład Twoja aplikacja zawiera odbiornik transmisji, który używa usługi do wykonania pewnych działań, możesz użyć tego kodu, aby ustawić i uzyskać blokadę wybudzania:
Kotlin
val wakeLock: PowerManager.WakeLock =
(getSystemService(POWER_SERVICE) as PowerManager).run {
newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyClassName::MyWakelockTag").apply {
acquire(WAKELOCK_TIMEOUT)
}
}
Java
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
PowerManager.WakeLock wakeLock =
powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyClassName::MyWakelockTag");
wakeLock.acquire(WAKELOCK_TIMEOUT);
Najważniejsze informacje o tym kodzie
Gdy kod tworzy obiekt blokady wybudzania, używa nazwy klasy jako części tagu blokady wybudzania. Zalecamy, aby w tagu blokady wybudzania uwzględnić nazwę pakietu, klasy lub metody. Dzięki temu w przypadku wystąpienia błędu łatwiej będzie znaleźć blokadę wybudzania w kodzie źródłowym. Więcej informacji znajdziesz w artykule Nadawanie odpowiednich nazw blokadom wybudzania.
WakeLock.acquire(long)
otrzymuje wartość limitu czasu w milisekundach. System zwalnia blokadę po upływie tego czasu, jeśli nie została ona wcześniej zwolniona.
Zobacz również
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-09-09 UTC.
[[["Łatwo zrozumieć","easyToUnderstand","thumb-up"],["Rozwiązało to mój problem","solvedMyProblem","thumb-up"],["Inne","otherUp","thumb-up"]],[["Brak potrzebnych mi informacji","missingTheInformationINeed","thumb-down"],["Zbyt skomplikowane / zbyt wiele czynności do wykonania","tooComplicatedTooManySteps","thumb-down"],["Nieaktualne treści","outOfDate","thumb-down"],["Problem z tłumaczeniem","translationIssue","thumb-down"],["Problem z przykładami/kodem","samplesCodeIssue","thumb-down"],["Inne","otherDown","thumb-down"]],["Ostatnia aktualizacja: 2025-09-09 UTC."],[],[],null,["You can set a *wake lock* to temporarily keep the device awake.\n| **Note:** Creating and holding wake locks can have a dramatic impact on the device's battery life. You shouldn't use wake locks if there are any suitable alternatives. For other options, see the [Choose the right API to keep the device awake](/develop/background-work/background-tasks/awake) documentation. If you do need to use a wake lock, make sure to hold it for as short a time as possible.\n\nDependencies\n\nYour app must have the [`WAKE_LOCK`](/reference/android/Manifest.permission#WAKE_LOCK) permission to set a wake lock.\nAdd the permission to your app's manifest: \n\n \u003cuses-permission android:name=\"android.permission.WAKE_LOCK\" /\u003e\n\nCreate and acquire a wake lock\n\nTo acquire a wake lock, do the following:\n\n1. Call [`PowerManager.newWakeLock()`](/reference/android/os/PowerManager#newWakeLock(int,%20java.lang.String)) to create a wake lock.\n This creates and configures a `PowerManager.WakeLock` object but does not\n actually keep the device awake.\n\n2. When you want to keep the device awake, call the wake lock object's\n [`acquire()`](/reference/android/os/PowerManager.WakeLock#acquire(long)) method.\n\nFor example, if your app includes a broadcast receiver that uses a service to do\nsome work, you can use this code to set and acquire a wake lock:\n\n\nKotlin \n\n```kotlin\nval wakeLock: PowerManager.WakeLock =\n (getSystemService(POWER_SERVICE) as PowerManager).run {\n newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, \"MyClassName::MyWakelockTag\").apply {\n acquire(WAKELOCK_TIMEOUT)\n }\n }https://github.com/android/snippets/blob/30ed522851a9273c94afcd3a4c30bf674346ad18/misc/src/main/java/com/example/snippets/backgroundwork/WakeLockSnippetsKotlin.kt#L29-L34\n```\n\nJava \n\n```java\nPowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);\nPowerManager.WakeLock wakeLock =\n powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, \"MyClassName::MyWakelockTag\");\nwakeLock.acquire(WAKELOCK_TIMEOUT);https://github.com/android/snippets/blob/30ed522851a9273c94afcd3a4c30bf674346ad18/misc/src/main/java/com/example/snippets/backgroundwork/WakeLockSnippetsJava.java#L19-L22\n```\n\n\u003cbr /\u003e\n\nKey points about this code\n\n- When the code creates the wake lock object, it uses the class's name as part\n of the wake lock tag. We recommend including your package, class, or method\n name as part of the wake lock tag. That way, if an error occurs, it's easier\n to locate the wake lock in your source code. For more information, see [Name\n the wake lock properly](/develop/background-work/background-tasks/awake/wakelock/best-practices#name).\n\n- `WakeLock.acquire(long)` is passed a timeout value in milliseconds. The\n system releases the wake lock after this much time passes, if you have not\n [already released it](/develop/background-work/background-tasks/awake/wakelock/release).\n\nSee also\n\n- [Release a wake lock](/develop/background-work/background-tasks/awake/wakelock/release)\n- [Follow wake lock best practices](/develop/background-work/background-tasks/awake/wakelock/best-practices)"]]