Untuk meningkatkan masa pakai baterai perangkat, Android dapat memengaruhi status perangkat dengan memantau penggunaan dan aktivitas perangkat. Platform dapat memasuki status tidur untuk menjeda aktivitas agar tidak berjalan saat perangkat tidak digunakan.
Tentang Mode Istirahatkan
Mode Istirahat memperpanjang masa pakai baterai dengan menunda CPU latar belakang aplikasi dan aktivitas jaringan saat perangkat tidak digunakan dalam waktu lama.
Perangkat yang tidak ada aktivitas di mode Istirahat secara berkala memasuki periode pemeliharaan, selama periode tersebut aplikasi dapat menyelesaikan pekerjaan yang tertunda (sinkronisasi, tugas, dll.). Mode Istirahatkan kemudian melanjutkan mode tidur selama jangka waktu yang lebih lama, diikuti dengan masa pemeliharaan lainnya. Platform akan melanjutkan urutan tidur/pemeliharaan Doze, sehingga meningkatkan durasi tidak ada aktivitas setiap kali, hingga mencapai waktu tidur maksimum beberapa jam. Setiap saat, perangkat dalam mode Istirahat tetap mendeteksi gerakan dan segera keluar dari mode Istirahat jika gerakan terdeteksi.
Android 7.0 dan yang lebih tinggi memperluas mode Istirahatkan untuk memicu serangkaian pengoptimalan yang lebih ringan setiap kali pengguna menonaktifkan layar perangkat, meskipun pengguna terus bergerak, sehingga masa pakai baterai lebih lama.
Layanan sistem penting biasanya disiapkan oleh produsen perangkat agar dikecualikan dari Mode Tidur. Pengguna juga dapat mengecualikan aplikasi tertentu dari Mode Tidur menggunakan menu Setelan. Namun, mengecualikan aplikasi dapat menyebabkan baterai perangkat cepat habis. Secara default, Mode Istirahatkan dinonaktifkan di AOSP; untuk mengetahui detail tentang cara mengaktifkan Mode Istirahatkan, lihat Mengintegrasikan Mode Istirahatkan.
Persyaratan Mode Istirahatkan
Dukungan Doze mengharuskan perangkat memiliki layanan pesan cloud, seperti Firebase Cloud Messaging (FCM). Peristiwa pemicu eksternal, seperti pesan cloud, dapat mengaktifkan aplikasi untuk sementara guna melakukan pekerjaan saat perangkat tetap dalam mode Istirahatkan.
Dukungan Istirahat Penuh juga memerlukan detektor gerakan signifikan (SMD) di perangkat; namun, mode Istirahat ringan di Android 7.0 dan yang lebih tinggi tidak memerlukan SMD. Jika mode Istirahat diaktifkan di perangkat yang:
- Memiliki SMD, pengoptimalan Doze penuh terjadi (termasuk pengoptimalan ringan).
- Tidak memiliki SMD, hanya pengoptimalan Doze ringan yang terjadi.
Siklus proses mode Istirahatkan
Mode Doze dimulai saat platform mendeteksi bahwa perangkat tidak ada aktivitas dan berakhir saat satu atau beberapa aktivitas kriteria keluar terjadi.
Platform mendeteksi bahwa perangkat tidak ada aktivitas saat:
- Perangkat tidak bergerak (menggunakan SMD).
- Layar perangkat nonaktif selama beberapa waktu.
Mode Istirahat tidak aktif saat perangkat yang menggunakan daya baterai dicolokkan ke pengisi daya.
Selama Mode Istirahatkan
Platform ini mencoba mempertahankan sistem dalam status tidur, secara berkala melanjutkan operasi normal selama periode pemeliharaan, lalu mengembalikan perangkat ke mode tidur selama periode berulang yang lebih lama. Selama tidur, batasan berikut aktif:
- Aplikasi tidak diizinkan untuk mengakses jaringan.
- Wakelock aplikasi diabaikan.
- Alarm ditangguhkan. Tidak termasuk alarm jam alarm dan alarm yang disetel menggunakan
setAndAllowWhileIdle()
(dibatasi hingga 1 per 15 menit per aplikasi saat dalam mode Istirahatkan). Pengecualian ini ditujukan untuk aplikasi (seperti Kalender) yang harus menampilkan notifikasi pengingat acara. - Pemindaian Wi-Fi tidak dilakukan.
- Sinkronisasi
SyncAdapter
dan tugasJobScheduler
ditangguhkan hingga periode pemeliharaan berikutnya. - Aplikasi yang menerima pesan SMS dan MMS dimasukkan ke dalam daftar yang diizinkan sementara agar dapat menyelesaikan pemrosesannya.
Keluar
Platform akan mengeluarkan perangkat dari mode Istirahatkan saat mendeteksi:
- Interaksi pengguna dengan perangkat
- Pergerakan perangkat
- Layar perangkat menyala
- Alarm AlarmClock yang akan segera berbunyi
Notifikasi tidak menyebabkan perangkat keluar dari mode Istirahatkan.
Android 7.0 dan yang lebih tinggi memperluas Doze dengan mengaktifkan mode tidur ringan selama layar nonaktif, sebelum perangkat tidak ada aktivitas.
Gambar 1. Mode istirahatkan untuk perangkat yang tidak diam dan diam.
Tindakan | Istirahatkan | Mode Istirahatkan Ringan |
---|---|---|
Pemicu | Layar nonaktif, menggunakan baterai, diam | Layar nonaktif, menggunakan baterai (dicabut) |
Waktu | Periode yang terus meningkat dengan pemeliharaan | Periode N menit berulang dengan periode pemeliharaan |
Pembatasan | Tidak ada akses jaringan, kunci layar aktif, atau pemindaian GPS/Wi-Fi; alarm dan tugas/sinkronisasi ditunda | Tidak ada akses jaringan; tugas/sinkronisasi ditangguhkan kecuali selama masa pemeliharaan |
Perilaku | Hanya pesan notifikasi push prioritas tinggi yang diterima | Semua pesan real-time (pesan instan, panggilan, dll.) diterima; pesan notifikasi push prioritas tinggi memungkinkan akses jaringan sementara |
Keluar | Alarm gerakan, layar aktif, atau jam alarm | Layar aktif |
Interaksi dengan Mode Aplikasi Standby
- Waktu yang dihabiskan dalam mode Istirahatkan tidak dihitung sebagai Aplikasi Standby.
- Saat perangkat dalam mode Istirahatkan, aplikasi yang tidak ada aktivitas diizinkan untuk melakukan operasi normal setidaknya sekali sehari.
Mengintegrasikan Mode Istirahatkan
Saat mode Istirahatkan diaktifkan, perangkat yang mendukung
SENSOR_TYPE_SIGNIFICANT_MOTION
akan melakukan pengoptimalan mode Istirahatkan penuh (termasuk pengoptimalan ringan);
perangkat tanpa SMD hanya akan melakukan pengoptimalan mode Istirahatkan ringan. Android
otomatis memilih pengoptimalan Doze yang sesuai dan konfigurasi
vendor tidak diperlukan.
Untuk mengaktifkan Mode Tidur untuk perangkat:
- Pastikan perangkat telah menginstal layanan pesan cloud.
- Dalam file konfigurasi overlay perangkat
overlay/frameworks/base/core/res/res/values/config.xml
, tetapkanconfig_enableAutoPowerModes
ketrue
: Di AOSP, parameter ini ditetapkan ke<bool name="config_enableAutoPowerModes">true</bool>
false
(Doze dinonaktifkan) secara default.
- Pastikan aplikasi dan layanan yang dimuat sebelumnya:
- Gunakan
panduan pengoptimalan
penghematan daya. Untuk mengetahui detailnya, lihat Menguji dan
mengoptimalkan aplikasi.
ATAU
- Dikecualikan dari mode Istirahatkan dan Aplikasi Standby. Untuk mengetahui detailnya, lihat Mengecualikan aplikasi.
- Gunakan
panduan pengoptimalan
penghematan daya. Untuk mengetahui detailnya, lihat Menguji dan
mengoptimalkan aplikasi.
- Pastikan layanan yang diperlukan dikecualikan dari Mode Tidur.
Tips
- Jika memungkinkan, gunakan FCM untuk pesan downstream.
- Jika pengguna Anda harus segera melihat notifikasi, gunakan pesan prioritas tinggi FCM.
- Berikan informasi yang memadai dalam payload pesan awal (untuk menghindari akses jaringan berikutnya yang tidak perlu).
- Setel alarm penting dengan
setAndAllowWhileIdle()
dansetExactAndAllowWhileIdle()
.
Menguji dan mengoptimalkan aplikasi
Uji semua aplikasi (terutama aplikasi yang dimuat sebelumnya) dalam mode Istirahatkan. Untuk mengetahui detailnya, lihat Menguji dengan Mode Istirahatkan dan Aplikasi Standby.