Bạn có thể đặt khoá đánh thức để tạm thời giữ cho thiết bị ở trạng thái hoạt động.
Phần phụ thuộc
Ứng dụng của bạn phải có quyền WAKE_LOCK
để thiết lập khoá đánh thức.
Thêm quyền vào tệp kê khai của ứng dụng:
<uses-permission android:name="android.permission.WAKE_LOCK" />
Tạo và nhận khoá đánh thức
Để nhận khoá đánh thức, hãy làm như sau:
Gọi
PowerManager.newWakeLock()
để tạo một khoá đánh thức. Thao tác này sẽ tạo và định cấu hình một đối tượngPowerManager.WakeLock
nhưng không thực sự giữ cho thiết bị hoạt động.Khi bạn muốn giữ cho thiết bị ở trạng thái thức, hãy gọi phương thức
acquire()
của đối tượng khoá chế độ thức.
Ví dụ: nếu ứng dụng của bạn có một broadcast receiver dùng một dịch vụ để thực hiện một số thao tác, bạn có thể dùng mã này để thiết lập và nhận khoá đánh thức:
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);
Các điểm chính về mã này
Khi tạo đối tượng khoá đánh thức, mã sẽ dùng tên của lớp làm một phần của thẻ khoá đánh thức. Bạn nên đưa tên gói, lớp hoặc phương thức vào thẻ khoá chế độ thức. Bằng cách đó, nếu xảy ra lỗi, bạn sẽ dễ dàng xác định được khoá đánh thức trong mã nguồn của mình. Để biết thêm thông tin, hãy xem phần Đặt tên cho khoá chế độ thức một cách phù hợp.
WakeLock.acquire(long)
được truyền một giá trị thời gian chờ tính bằng mili giây. Hệ thống sẽ huỷ khoá chế độ thức sau khoảng thời gian này, nếu bạn chưa huỷ khoá.