Saat pengguna membiarkan perangkat Android tidak ada aktivitas selama beberapa saat, perangkat akan segera beralih ke status penangguhan untuk menghindari pengosongan baterai. Namun, ada kalanya aplikasi perlu mencegah CPU beralih ke status penangguhan. Dalam beberapa kasus, aplikasi mungkin perlu menjaga layar tetap aktif saat aplikasi berfungsi. Dalam kasus lain, aplikasi tidak perlu terus mengaktifkan layar, tetapi masih memerlukan CPU untuk aktif.
Pendekatan yang diambil bergantung pada kebutuhan aplikasi. Namun, aturan umum adalah Anda harus menggunakan pendekatan yang paling ringan, untuk meminimalkan dampak aplikasi terhadap resource sistem. Dokumen ini membantu Anda memilih teknologi Android yang tepat untuk situasi Anda.
Memilih teknologi yang tepat
Opsi terbaik untuk membuat perangkat tetap aktif bergantung pada kebutuhan aplikasi Anda. Bagian ini membantu Anda memilih pendekatan yang tepat.
- Apakah aplikasi Anda perlu tetap menyalakan layar?
- Jika Ya, lihat Membiarkan layar tetap menyala. Mungkin ada
API tujuan khusus yang melakukan hal yang Anda butuhkan; misalnya, jika Anda
menerapkan UI panggilan telepon, Anda dapat menggunakan framework telekomunikasi
Android, yang membuat layar tetap menyala saat diperlukan. Jika tidak ada
API tujuan khusus untuk situasi Anda, Anda dapat menggunakan
keepScreenOn
API.
- Jika Ya, lihat Membiarkan layar tetap menyala. Mungkin ada
API tujuan khusus yang melakukan hal yang Anda butuhkan; misalnya, jika Anda
menerapkan UI panggilan telepon, Anda dapat menggunakan framework telekomunikasi
Android, yang membuat layar tetap menyala saat diperlukan. Jika tidak ada
API tujuan khusus untuk situasi Anda, Anda dapat menggunakan
- Apakah aplikasi Anda menjalankan layanan latar depan, dan Anda perlu membuat perangkat
tetap aktif saat layar nonaktif saat layanan berjalan?
- Jika Tidak, Anda tidak perlu membuat perangkat tetap aktif. Jika pengguna secara aktif berinteraksi dengan aplikasi, perangkat akan tetap aktif. Jika pengguna tidak berinteraksi dengan aplikasi Anda dan Anda tidak menjalankan layanan latar depan, Anda harus membiarkan perangkat beralih ke mode penangguhan jika diperlukan. Jika Anda hanya perlu memastikan beberapa pekerjaan selesai saat pengguna tidak berada di aplikasi, lihat dokumentasi tugas latar belakang untuk menemukan opsi terbaik.
- Jika Ya, konfirmasi terlebih dahulu bahwa Anda benar-benar perlu menggunakan layanan
latar depan. Bergantung pada situasi Anda, mungkin ada beberapa API tujuan khusus
yang dapat Anda gunakan untuk memenuhi kebutuhan Anda, bukan layanan latar depan.
Anda dapat menemukan informasi tentang hal ini dalam dokumentasi Layanan Latar
Depan. Misalnya, jika perlu melacak lokasi
pengguna, Anda mungkin dapat menggunakan geofencing API, bukan
layanan latar depan
location
.
- Apakah akan merugikan pengalaman pengguna jika perangkat ditangguhkan saat
layanan latar depan berjalan dan layar perangkat nonaktif? (Misalnya, jika Anda menggunakan layanan latar depan untuk memperbarui notifikasi, pengalaman pengguna
tidak akan buruk jika perangkat ditangguhkan.)
- Jika Tidak, jangan gunakan wakelock. Tindakan akan dilanjutkan secara otomatis setelah pengguna berinteraksi dengan perangkatnya, yang akan menghentikan penangguhan.
- Jika Ya, Anda mungkin perlu menggunakan penguncian layar saat aktif. Namun, Anda harus tetap memeriksa untuk melihat apakah Anda sudah menggunakan API atau melakukan tindakan yang mendeklarasikan wake lock atas nama Anda, seperti yang dibahas dalam Tindakan yang membuat perangkat tetap aktif.
Tindakan yang membuat perangkat tetap aktif
Jika aplikasi Anda melakukan salah satu hal berikut, Anda tidak perlu menetapkan penguncian layar saat aktif sendiri. Tindakan dan API berikut akan membuat perangkat tetap aktif untuk Anda.
- Jika Anda memutar audio, sistem audio akan menetapkan dan mengelola kunci layar aktif untuk Anda; Anda tidak perlu melakukannya sendiri.
- Jika Anda menggunakan API atau library penjadwalan tugas seperti WorkManager,
JobScheduler
, atauDownloadManager
, sistem atau library akan memperoleh wake lock untuk Anda. - Jika menggunakan Media3 ExoPlayer, Anda dapat menggunakan
ExoPlayer.setWakeMode()
agar pemutar menyetel kunci layar aktif untuk Anda. - Sensor perangkat tertentu adalah sensor pengaktifan; Anda dapat menggunakan
SensorManager
agar sensor tersebut mengaktifkan perangkat saat memiliki data untuk dilaporkan. Untuk memeriksa apakah sensor adalah sensor bangun, panggilSensor.isWakeUpSensor
.