Nếu cần giữ cho thiết bị luôn chạy để hoàn thành một số công việc trước khi thiết bị chuyển sang trạng thái tạm ngưng, bạn có thể sử dụng tính năng dịch vụ hệ thống PowerManager
có tên là khoá chế độ thức. Khoá chế độ thức cho phép ứng dụng của bạn kiểm soát trạng thái nguồn của thiết bị.
Đặt khoá chế độ thức
Để sử dụng khoá chế độ thức, bước đầu tiên là thêm quyền WAKE_LOCK
vào tệp kê khai của ứng dụng:
<uses-permission android:name="android.permission.WAKE_LOCK" />
Nếu ứng dụng của bạn có một broadcast receiver sử dụng một dịch vụ để thực hiện một số công việc, thì sau đây là cách bạn đặt trực tiếp khoá chế độ thức:
Kotlin
val wakeLock: PowerManager.WakeLock = (getSystemService(Context.POWER_SERVICE) as PowerManager).run { newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyApp::MyWakelockTag").apply { acquire() } }
Java
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyApp::MyWakelockTag"); wakeLock.acquire();
Giải phóng khoá chế độ thức
Để nhả khoá chế độ thức, hãy gọi wakelock.release()
. Thao tác này sẽ giải phóng quyền xác nhận của bạn cho CPU. Bạn cần phải nhả khoá chế độ thức ngay khi ứng dụng của bạn ngừng sử dụng khoá đó để tránh tiêu hao pin.