Untuk meningkatkan masa pakai baterai perangkat, Android dapat memengaruhi status perangkat dengan memantau penggunaan dan bangun perangkat. Platform dapat memasuki kondisi tidur untuk menjeda aktivitas agar tidak berjalan saat perangkat tidak digunakan.
Mengantuk
Istirahatkan memperpanjang masa pakai baterai dengan menunda CPU latar belakang aplikasi dan aktivitas jaringan saat perangkat tidak digunakan dalam waktu lama.
Perangkat menganggur di Istirahatkan secara berkala memasuki jendela pemeliharaan, selama aplikasi dapat menyelesaikan pekerjaan yang tertunda (sinkronisasi, pekerjaan, dll.). Istirahatkan kemudian melanjutkan tidur untuk jangka waktu yang lebih lama, diikuti oleh periode pemeliharaan lainnya. Platform melanjutkan urutan tidur/pemeliharaan Istirahatkan, menambah lama waktu idle setiap kali, hingga waktu tidur maksimum beberapa jam tercapai. Setiap saat, perangkat dalam mode Istirahatkan tetap waspada terhadap gerakan dan segera meninggalkan mode Istirahatkan jika gerakan terdeteksi.
Android 7.0 dan yang lebih tinggi memperluas Istirahatkan untuk memicu serangkaian pengoptimalan yang lebih ringan setiap kali pengguna mematikan layar perangkat, bahkan saat pengguna terus bergerak, memungkinkan masa pakai baterai yang lebih lama.
Layanan sistem penting umumnya disiapkan oleh produsen perangkat untuk dikecualikan dari Istirahatkan. Pengguna juga dapat mengecualikan aplikasi tertentu dari Istirahatkan menggunakan menu Pengaturan. Namun, mengecualikan aplikasi dapat menyebabkan baterai perangkat terkuras. Secara default, Istirahatkan dinonaktifkan di AOSP; untuk detail tentang mengaktifkan Istirahatkan, lihat Mengintegrasikan Istirahatkan .
Persyaratan istirahat
Dukungan Istirahatkan mengharuskan perangkat memiliki layanan perpesanan cloud, seperti Firebase Cloud Messaging (FCM) . Peristiwa pemicu eksternal, seperti pesan cloud, dapat membangunkan aplikasi untuk sementara waktu untuk melakukan pekerjaan saat perangkat tetap dalam mode Istirahatkan.
Dukungan Istirahatkan Penuh juga memerlukan detektor gerakan signifikan (SMD) pada perangkat; namun, mode Doze ringan di Android 7.0 dan lebih tinggi tidak memerlukan SMD. Jika Istirahatkan diaktifkan pada perangkat yang:
- Memiliki SMD, pengoptimalan Istirahatkan penuh terjadi (termasuk pengoptimalan ringan).
- Tidak memiliki SMD, hanya pengoptimalan Doze ringan yang terjadi.
Siklus hidup tertidur
Istirahatkan dimulai ketika platform mendeteksi bahwa perangkat tidak digunakan dan berakhir ketika satu atau beberapa aktivitas kriteria keluar terjadi.
Deteksi
Platform mendeteksi bahwa perangkat tidak digunakan saat:
- Perangkat stasioner (menggunakan SMD).
- Layar perangkat mati untuk beberapa waktu.
Mode Istirahatkan tidak aktif saat perangkat bertenaga baterai dicolokkan ke pengisi daya.
Selama Tidur
Platform mencoba untuk menjaga sistem dalam keadaan tidur, secara berkala melanjutkan operasi normal selama jendela pemeliharaan, kemudian mengembalikan perangkat ke mode tidur untuk periode berulang yang lebih lama. Selama tidur, pembatasan berikut aktif:
- Aplikasi tidak diizinkan mengakses jaringan.
- Penguncian 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 pemberitahuan pengingat acara. - Pemindaian Wi-Fi tidak dilakukan.
-
SyncAdapter
dan tugasJobScheduler
ditangguhkan hingga periode pemeliharaan berikutnya. - Aplikasi yang menerima pesan SMS dan MMS dimasukkan ke daftar putih sementara sehingga mereka dapat menyelesaikan pemrosesannya.
KELUAR
Platform keluar dari perangkat dari Istirahatkan saat mendeteksi:
- Interaksi pengguna dengan perangkat
- Pergerakan perangkat
- Layar perangkat menyala
- Alarm Segera Alarm jam
Notifikasi tidak menyebabkan perangkat keluar dari Istirahatkan.
Android 7.0 dan yang lebih tinggi memperluas Istirahatkan dengan mengaktifkan mode tidur ringan selama layar mati, sebelum perangkat menganggur.
Tindakan | Mengantuk | Istirahat Ringan |
---|---|---|
Pemicu | Layar mati, dengan baterai, stasioner | Layar mati, dengan baterai (dicabut) |
Waktu | Berturut-turut meningkatkan periode dengan pemeliharaan | Periode N-menit berulang dengan periode pemeliharaan |
Pembatasan | Tidak ada akses jaringan, penguncian layar saat aktif, atau pemindaian GPS/Wi-Fi; alarm dan pekerjaan/sinkronisasi ditangguhkan | Tidak ada akses jaringan; pekerjaan/sinkronisasi ditangguhkan kecuali selama periode pemeliharaan |
Perilaku | Hanya pesan pemberitahuan push prioritas tinggi yang diterima | Semua pesan waktu nyata (pesan instan, panggilan, dll.) diterima; pesan pemberitahuan push prioritas tinggi memungkinkan akses jaringan sementara |
KELUAR | Gerak, layar aktif, atau alarm jam alarm | Layar aktif |
Interaksi dengan Aplikasi Siaga
- Waktu yang dihabiskan di Istirahatkan tidak diperhitungkan dalam Aplikasi Siaga.
- Saat perangkat dalam mode Istirahatkan, aplikasi yang tidak aktif diizinkan untuk melakukan operasi normal setidaknya sekali sehari.
Mengintegrasikan Istirahat
Saat Istirahatkan diaktifkan, perangkat yang mendukung SENSOR_TYPE_SIGNIFICANT_MOTION
melakukan pengoptimalan Istirahatkan penuh (termasuk pengoptimalan ringan); perangkat tanpa SMD hanya melakukan pengoptimalan Istirahatkan yang ringan. Android secara otomatis memilih pengoptimalan Istirahatkan yang sesuai dan konfigurasi vendor tidak diperlukan.
Untuk mengaktifkan Istirahatkan untuk perangkat:
- Konfirmasikan bahwa perangkat memiliki layanan perpesanan cloud yang diinstal.
- Dalam overlay perangkat config file
overlay/frameworks/base/core/res/res/values/config.xml
, setelconfig_enableAutoPowerModes
ketrue
:<bool name="config_enableAutoPowerModes">true</bool>
Di AOSP, parameter ini disetel kefalse
(Doze dinonaktifkan) secara default. - Konfirmasikan bahwa aplikasi dan layanan yang dimuat sebelumnya:
- Gunakan panduan pengoptimalan hemat daya . Untuk detailnya, lihat Menguji dan mengoptimalkan aplikasi .
ATAU
- Dikecualikan dari Istirahatkan dan Aplikasi Siaga. Untuk detailnya, lihat Mengecualikan aplikasi .
- Gunakan panduan pengoptimalan hemat daya . Untuk detailnya, lihat Menguji dan mengoptimalkan aplikasi .
- Konfirmasikan bahwa layanan yang diperlukan dikecualikan dari Istirahatkan.
Tips
- Jika memungkinkan, gunakan FCM untuk pengiriman pesan hilir .
- Jika pengguna Anda harus segera melihat notifikasi, gunakan pesan prioritas tinggi FCM .
- Berikan informasi yang cukup dalam muatan 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 detailnya, lihat Menguji dengan Istirahatkan dan Aplikasi Siaga .