設定喚醒鎖定

你可以設定喚醒鎖定,暫時讓裝置保持喚醒狀態。

依附元件

應用程式必須具備 WAKE_LOCK 權限,才能設定喚醒鎖定。 在應用程式資訊清單中新增權限:

<uses-permission android:name="android.permission.WAKE_LOCK" />

建立及取得喚醒鎖定

如要取得喚醒鎖定,請執行下列步驟:

  1. 呼叫 PowerManager.newWakeLock() 建立喚醒鎖定。 這會建立及設定 PowerManager.WakeLock 物件,但不會實際讓裝置保持喚醒狀態。

  2. 如要讓裝置保持喚醒狀態,請呼叫 Wake Lock 物件的 acquire() 方法。

舉例來說,如果應用程式包含使用服務執行某些工作的廣播接收器,您可以使用下列程式碼設定及取得喚醒鎖定:

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);

這組代碼的重點

  • 程式碼建立喚醒鎖定物件時,會使用類別名稱做為喚醒鎖定標記的一部分。建議您在 Wake Lock 標籤中加入封包、類別或方法名稱。這樣一來,如果發生錯誤,您就能更輕鬆地在原始碼中找到喚醒鎖定。詳情請參閱「正確命名 Wake Lock」。

  • WakeLock.acquire(long) 會以毫秒為單位傳遞逾時值。如果您尚未釋放 Wake Lock,系統會在經過這段時間後釋放。

另請參閱