Doze Mode adalah mode hemat energi Android yang diperkenalkan di versi 6.0 Marshmallow, yang secara signifikan membatasi aktivitas latar belakang aplikasi saat perangkat tidak aktif. Sistem mengalihkan aplikasi ke kondisi konsumsi daya rendah, menunda permintaan jaringan, sinkronisasi dan JobScheduler untuk memperpanjang masa pakai baterai. Menurut analisis Android Developers, 2025, Doze Mode dapat meningkatkan waktu siaga perangkat hingga 2–3 kali tergantung pada model dan versi OS.
Poin Utama
Doze Mode adalah mekanisme hemat energi bawaan Android yang aktif ketika perangkat tidak terhubung ke pengisi daya, layar mati dan pengguna tidak berinteraksi dengan perangkat selama waktu tertentu. Tujuan Doze adalah meminimalkan aktivitas latar belakang aplikasi untuk memperpanjang masa pakai baterai secara maksimal dalam mode siaga. Sistem menunda JobScheduler, sinkronisasi akun, AlarmManager dan permintaan jaringan.
Mode ini diperkenalkan di Android 6.0 Marshmallow (API 23) dan ditingkatkan secara signifikan di versi-versi berikutnya. Di Android 7.0 Nougat muncul fase kedua (Light Doze) yang aktif saat perangkat bergerak. Android 8.0 memperkenalkan batasan tambahan pada layanan latar belakang yang bekerja bersama Doze. Di Android 12+, Doze diintegrasikan dengan sistem manajemen baterai yang diperbarui, yang menganalisis perilaku pengguna.
Penting untuk dipahami: Doze Mode tidak menonaktifkan aplikasi sepenuhnya. Ia mengalihkannya ke keadaan dengan tugas yang ditunda, tetapi tidak mematikan proses. Foreground Service dengan notifikasi tetap berjalan, notifikasi push prioritas tinggi (FCM high-priority) terkirim, dan alarm berbunyi sesuai jadwal. Doze hanya memengaruhi operasi latar belakang yang tidak dilihat dan tidak diharapkan pengguna saat itu.
Doze Mode aktif ketika semua kondisi terpenuhi: layar mati lebih dari 30 menit (aktivasi pertama), perangkat diam (menggunakan akselerometer), tidak terhubung ke pengisi daya. Jika pengguna mengambil telepon atau menghubungkan pengisi daya, Doze segera dinonaktifkan. Di Android 7+, Light Doze aktif setelah 5 menit tidak aktif, bahkan saat perangkat bergerak.
Doze Mode mengelola aktivitas latar belakang melalui layanan sistem DeviceIdleController, yang menganalisis status sensor, layar dan pengisi daya. Ketika semua kondisi aktivasi terpenuhi, sistem mengalihkan aplikasi ke mode siaga, mengelompokkan permintaan mereka ke dalam jendela layanan. Di dalam jendela ini, semua tugas yang ditunda — panggilan jaringan, sinkronisasi, AlarmManager — dijalankan secara batch.
PowerManager sistem mengontrol aplikasi mana yang dapat keluar dari Doze. Notifikasi push prioritas tinggi (FCM high-priority) dapat membangunkan perangkat untuk mengirimkan pesan. Sistem juga mengabaikan Doze untuk aplikasi yang ditambahkan pengguna ke Whitelist optimasi baterai. Semua aplikasi lain harus menunggu jendela layanan berikutnya.
Durasi jendela layanan di Deep Doze meningkat secara eksponensial: jendela pertama setelah 1 jam, kedua setelah 2 jam, ketiga setelah 4 jam dan seterusnya hingga interval maksimum 12 jam. Ini berarti semakin lama perangkat dalam Doze, semakin jarang aplikasi dapat menjalankan tugas latar belakang — baterai dihemat secara maksimal agresif.
Dalam Doze Mode, semua permintaan jaringan ditangguhkan hingga jendela layanan tiba. Pengecualian hanya pesan FCM high-priority (dengan tag “high_priority” di payload) dan sinyal dari AlarmManager dengan flag setAndAllowWhileIdle() atau setExactAndAllowWhileIdle(). Panggilan jaringan biasa melalui Retrofit, OkHttp atau Volley tidak akan dijalankan sampai jendela terbuka.
Doze Mode terdiri dari dua fase: Light Doze (tidur ringan) dan Deep Doze (tidur nyenyak). Setiap fase memberlakukan batasannya sendiri dan memiliki ambang aktivasi yang berbeda. Memahami perbedaan antara fase sangat penting bagi pengembang yang merancang tugas latar belakang yang tahan terhadap mode hemat energi.
Light Doze aktif setelah 5–30 menit tidak aktif (layar mati, tanpa gerakan). Dalam fase ini, permintaan jaringan dan sinkronisasi ditangguhkan, tetapi AlarmManager dan JobScheduler terus bekerja dengan penundaan kecil. Aplikasi dapat keluar dari Light Doze saat menerima notifikasi push atau saat terhubung ke pengisi daya. Light Doze tidak memerlukan imobilitas total — perangkat dapat bergerak.
Deep Doze terjadi setelah 60–90 menit tidak aktif dengan perangkat diam (akselerometer tidak mendeteksi gerakan). Di Deep Doze, sistem menunda tugas secara jauh lebih agresif: jendela layanan terbuka lebih jarang (dengan peningkatan interval eksponensial), AlarmManager hanya aktif dengan flag setAndAllowWhileIdle(), dan WakeLock tidak berfungsi dalam mode normal. Aplikasi yang tidak ada di Whitelist hampir sepenuhnya kehilangan aktivitas latar belakang.
| Parameter | Light Doze | Deep Doze |
|---|---|---|
| Waktu aktivasi | 5–30 menit | 60–90 menit |
| Kebutuhan gerakan | Tidak diperlukan | Imobilitas |
| Interval jendela | 10–60 menit | 1–12 jam |
| AlarmManager | Bekerja dengan penundaan | Hanya withAllowWhileIdle |
| Jaringan di jendela | Tersedia | Tersedia |
Doze Mode memberlakukan beberapa kategori batasan yang harus dipertimbangkan pengembang saat merancang aplikasi. Mengabaikan batasan ini menyebabkan tugas latar belakang tidak dijalankan dan pengguna melihat aplikasi tidak bekerja dengan benar — tidak ada pembaruan, pesan tidak terkirim, sinkronisasi tidak dilakukan.
Semua permintaan jaringan diblokir hingga jendela layanan tiba. Ini mencakup panggilan HTTP, koneksi WebSocket, unduhan file. Pengecualian — pesan FCM high-priority yang melalui saluran Google Play Services terpisah, tidak tergantung pada Doze. Untuk sinkronisasi data kritis, disarankan menggunakan WorkManager dengan kebijakan NetworkType.CONNECTED.
AlarmManager di Deep Doze menunda semua alarm kecuali yang dibuat dengan metode setAndAllowWhileIdle() dan setExactAndAllowWhileIdle(). Namun bahkan metode ini memiliki batasan — tidak lebih dari 1 aktivasi per 9 menit per aplikasi. Alarm tepat setExact() di Deep Doze tidak menjamin aktivasi pada waktu yang ditentukan.
WakeLock di Doze Mode bekerja tidak standar: sistem tidak mempertahankan kunci tidur untuk aplikasi di luar Whitelist. Bahkan jika aplikasi telah memperoleh PARTIAL_WAKE_LOCK dengan benar, saat Deep Doze tiba, sistem dapat melepaskannya secara paksa. Satu-satunya cara untuk menjamin eksekusi tugas di Doze adalah menggunakan Foreground Service dengan notifikasi.
Whitelist (daftar putih) Doze adalah kumpulan aplikasi yang diizinkan sistem untuk aktivitas latar belakang dalam mode hemat energi dengan batasan minimal. Pengguna dapat menambahkan aplikasi secara manual melalui Pengaturan → Baterai → Optimasi Baterai. Aplikasi sistem, peluncur dan layanan Google Play Services berada di Whitelist secara default.
Pengembang dapat meminta penambahan ke Whitelist melalui dialog sistem dengan Intent ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS. Untuk ini, izin REQUEST_IGNORE_BATTERY_OPTIMIZATIONS diperlukan di manifes. Namun Google tidak merekomendasikan meminta pengecualian tanpa alasan yang kuat — aplikasi yang menyalahgunakan kemampuan ini berisiko ditolak saat dipublikasikan di Google Play.
Tanpa Whitelist, aplikasi dapat menggunakan FCM high-priority untuk membangunkan perangkat dari Doze. Setiap pesan tersebut memberi aplikasi jendela singkat (10–30 detik) untuk menjalankan tugas. Untuk operasi yang lebih lama, aplikasi harus memulai Foreground Service yang akan terus bekerja di jendela layanan Doze. Google juga menyediakan mekanisme pembebasan untuk beberapa jenis aplikasi: navigasi, medis, perpesanan.
Untuk memeriksa apakah aplikasi berada di Whitelist optimasi baterai, digunakan metode powerManager.isIgnoringBatteryOptimizations(). Jika metode mengembalikan false, aplikasi tunduk pada semua batasan Doze. Jika true — aplikasi dapat menggunakan Wakelock, AlarmManager dan jaringan tanpa batasan bahkan di Deep Doze. Namun penyalahgunaan hak istimewa ini akan menyebabkan ulasan buruk dari pengguna.
Pengujian perilaku aplikasi dalam Doze Mode adalah tahap pengembangan wajib, karena Doze dapat mengganggu fungsi latar belakang. Android menyediakan alat baris perintah melalui ADB untuk memaksa perangkat beralih ke Light Doze dan Deep Doze. Pengujian harus dilakukan pada perangkat fisik atau emulator dengan Android 6.0+.
Untuk masuk ke Light Doze digunakan perintah adb shell dumpsys deviceidle step light. Untuk Deep Doze — adb shell dumpsys deviceidle step deep. Perintah adb shell dumpsys deviceidle force-idle deep segera mengalihkan perangkat ke Deep Doze tanpa menunggu batas waktu standar. Setelah pengujian, Doze dimatikan dengan perintah adb shell dumpsys deviceidle unforce.
# Masuk paksa ke Light Doze
$ adb shell dumpsys deviceidle step light
# Masuk paksa ke Deep Doze
$ adb shell dumpsys deviceidle step deep
# Transisi segera ke Deep Doze
$ adb shell dumpsys deviceidle force-idle deep
# Keluar dari Doze
$ adb shell dumpsys deviceidle unforce
# Melihat status Doze
$ adb shell dumpsys deviceidle
Setelah beralih ke Doze Mode, perlu diperiksa: apakah permintaan jaringan berfungsi (harus ditunda), apakah AlarmManager aktif, apakah pesan FCM terkirim, apakah tugas WorkManager dijalankan dengan benar. WorkManager di Doze terus bekerja: tugasnya dijalankan di jendela layanan. Namun jika tugas memerlukan eksekusi segera, harus ditentukan setExpedited() atau menggunakan Foreground Service.
Pengembangan aplikasi yang tahan terhadap Doze Mode memerlukan peninjauan kembali pendekatan terhadap tugas latar belakang. Google merekomendasikan merancang aplikasi agar bekerja dengan benar pada setiap batasan Doze, tanpa mengandalkan eksekusi segera operasi latar belakang. Prinsip dasar — menggunakan WorkManager untuk semua tugas latar belakang yang dapat ditunda.
WorkManager adalah API yang direkomendasikan Google untuk tugas latar belakang, karena secara otomatis beradaptasi dengan Doze. WorkManager menggunakan JobScheduler (API 23+) atau AlarmManager + BroadcastReceiver pada versi lama. Tugas WorkManager dijalankan di jendela layanan Doze terdekat, dan jika perlu — segera melalui Expedited Work (Foreground Service di balik layar).
Jika tugas tidak dapat ditunda (pemutaran media, navigasi, VoIP), gunakan Foreground Service dengan notifikasi wajib. Foreground Service mendapat pengecualian dari Doze: dapat mempertahankan WakeLock dan menjalankan permintaan jaringan. Namun bahkan Foreground Service tunduk pada kebijakan jendela layanan Deep Doze untuk beberapa jenis tugas — misalnya, dataSync.
Untuk mengirimkan pesan yang memerlukan perhatian segera (panggilan masuk, notifikasi mendesak), gunakan pesan FCM high-priority. Pesan semacam itu membangunkan perangkat dari Doze dan memberi aplikasi jendela singkat untuk diproses. Jangan gunakan high-priority untuk notifikasi biasa — ini akan menyebabkan baterai cepat habis dan dapat dianggap Google Play sebagai pelanggaran kebijakan.
Pertanyaan yang Sering Diajukan
Doze Mode adalah mode hemat energi Android 6+ yang membatasi aktivitas latar belakang aplikasi saat perangkat tidak digunakan (layar mati, tanpa gerakan). Sistem menunda permintaan jaringan, sinkronisasi dan JobScheduler, mengelompokkannya dalam jendela layanan untuk menghemat baterai.
Doze Mode memiliki dua fase: Light Doze (tidur ringan) aktif setelah 5–30 menit, memungkinkan AlarmManager bekerja dengan penundaan. Deep Doze (tidur nyenyak) terjadi setelah 60–90 menit imobilitas, membatasi tugas latar belakang secara agresif dengan jendela layanan hingga 12 jam.
Doze memblokir permintaan jaringan, menunda AlarmManager (kecuali setAndAllowWhileIdle), melepaskan WakeLock paksa dan mengelompokkan JobScheduler dalam jendela layanan. Pengecualian — Foreground Service, FCM high-priority dan aplikasi di Whitelist pengguna.
Minta izin REQUEST_IGNORE_BATTERY_OPTIMIZATIONS di manifes dan kirim Intent dengan aksi ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS. Sistem akan menampilkan dialog kepada pengguna. Penambahan ke Whitelist adalah hak istimewa yang Google rekomendasikan hanya untuk aplikasi yang sangat penting.
Gunakan perintah ADB: adb shell dumpsys deviceidle force-idle deep untuk masuk ke Deep Doze, adb shell dumpsys deviceidle step light untuk Light Doze, adb shell dumpsys deviceidle unforce untuk keluar. Periksa kerja WorkManager, AlarmManager dan FCM di setiap mode.
Kesimpulan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga