Memilih API yang tepat agar perangkat tetap aktif

Saat pengguna membiarkan perangkat Android mereka tidak ada aktivitas, perangkat akan segera masuk ke status ditangguhkan untuk menghindari baterai habis. Namun, ada kalanya aplikasi perlu mencegah CPU masuk ke status ditangguhkan. Dalam beberapa kasus, aplikasi mungkin perlu menjaga layar tetap aktif saat sedang bekerja. Dalam kasus lain, aplikasi tidak perlu menjaga layar tetap aktif, tetapi tetap memerlukan CPU agar aktif.

Pendekatan yang diambil bergantung pada kebutuhan aplikasi. Namun, aturan umumnya adalah Anda harus menggunakan pendekatan yang paling ringan, guna 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 menjaga perangkat Anda tetap aktif bergantung pada kebutuhan aplikasi Anda. Bagian ini membantu Anda memilih pendekatan yang tepat.

Diagram alur yang merangkum cara memilih pendekatan yang tepat agar perangkat tetap aktif. Isi diagram alur akan dijelaskan dalam teks berikut.

  • Apakah aplikasi Anda perlu menjaga layar tetap aktif?
    • Jika Ya, lihat Aktifkan layar. Mungkin ada API khusus yang melakukan apa yang Anda butuhkan; misalnya, jika Anda menerapkan UI panggilan telepon, Anda dapat menggunakan framework telekomunikasi Android, yang menjaga layar tetap aktif 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 menjaga perangkat tetap aktif saat layar nonaktif selama layanan berjalan?
    • Jika Tidak, Anda tidak perlu menjaga perangkat tetap aktif. Jika pengguna berinteraksi secara aktif dengan aplikasi, perangkat akan tetap aktif. Jika pengguna tidak berinteraksi dengan aplikasi Anda dan Anda tidak menjalankan layanan latar depan, Anda harus membiarkan perangkat masuk ke mode ditangguhkan jika perlu. Jika Anda hanya perlu memastikan beberapa pekerjaan selesai saat pengguna tidak menggunakan 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 Anda perlu melacak lokasi pengguna, Anda dapat menggunakan geofencing API, bukan layanan latar depan location.
  • Apakah pengalaman pengguna akan terganggu jika perangkat ditangguhkan saat layanan latar depan berjalan dan layar perangkat nonaktif? (Misalnya, jika Anda menggunakan layanan latar depan untuk memperbarui notifikasi, hal itu tidak akan menjadi pengalaman pengguna yang buruk jika perangkat ditangguhkan.)
    • Jika Tidak, jangan gunakan penguncian layar saat aktif. Tindakan dilanjutkan secara otomatis setelah pengguna berinteraksi dengan perangkatnya, yang akan mengeluarkan perangkat dari penangguhan.
    • Jika Ya, Anda mungkin perlu menggunakan penguncian layar saat aktif. Namun, Anda tetap harus memeriksa apakah Anda sudah menggunakan API atau melakukan tindakan yang mendeklarasikan kunci tetap aktif atas nama Anda, seperti yang dibahas di bagian Tindakan yang membuat perangkat tetap aktif.

Tindakan yang membuat perangkat tetap aktif

Jika aplikasi Anda melakukan salah satu hal berikut, Anda tidak perlu menyetel sendiri fitur penguncian layar saat aktif. Tindakan dan API berikut akan membuat perangkat tetap aktif untuk Anda.

  • Jika Anda memutar audio, sistem audio akan menyetel dan mengelola kunci tetap 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 mendapatkan kunci saat bangun yang diatribusikan ke aplikasi Anda.
  • Jika menggunakan Media3 ExoPlayer, Anda dapat menggunakan ExoPlayer.setWakeMode() agar pemutar menetapkan kunci tetap aktif untuk Anda.
  • Sensor perangkat tertentu adalah sensor aktif; Anda dapat menggunakan SensorManager agar sensor tersebut mengaktifkan perangkat saat memiliki data untuk dilaporkan. Untuk memeriksa apakah sensor adalah sensor aktif, panggil Sensor.isWakeUpSensor.
  • Jika Anda menjadwalkan alarm, perangkat akan aktif saat alarm berbunyi, meskipun aplikasi Anda tidak berjalan.

Lihat juga