Menjaga perangkat tetap aktif

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.

Diagram alir yang merangkum cara memilih pendekatan yang tepat untuk membuat perangkat tetap aktif. Konten diagram alir diperluas dalam teks berikut.

  • 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.
  • 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, atau DownloadManager, 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, panggil Sensor.isWakeUpSensor.

Lihat juga