Doze Mode: esensi, fase dan mekanisme penghematan energi

Penulis: IT Sectr Diterbitkan: 2026-03-28 Waktu membaca: 10 mnt

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 — mode tidur Android 6+, yang membatasi aktivitas latar belakang saat tidak aktif
  • Dua fase — Light Doze (tidur ringan) dan Deep Doze (tidur nyenyak) dengan batasan berbeda
  • Jendela layanan — periode singkat saat aplikasi dapat menjalankan tugas di Deep Doze
  • Whitelist — pengecualian untuk aplikasi yang diizinkan bekerja di latar belakang dalam Doze
  • GCM/FCM — notifikasi push prioritas tinggi membangunkan perangkat dari Doze

Apa itu Doze Mode

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.

Kondisi aktivasi

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.

Bagaimana Doze Mode bekerja

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.

Dampak pada permintaan jaringan

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.

Fase Doze Mode

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 (tidur ringan)

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 (tidur nyenyak)

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.

ParameterLight DozeDeep Doze
Waktu aktivasi5–30 menit60–90 menit
Kebutuhan gerakanTidak diperlukanImobilitas
Interval jendela10–60 menit1–12 jam
AlarmManagerBekerja dengan penundaanHanya withAllowWhileIdle
Jaringan di jendelaTersediaTersedia

Batasan dalam Doze Mode

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.

Batasan jaringan

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.

Batasan AlarmManager

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.

Batasan WakeLock

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.

  • Jaringan — semua permintaan ditunda hingga jendela layanan, kecuali FCM high-priority
  • AlarmManager — alarm tepat ditunda; setAndAllowWhileIdle — maks 1/9 menit
  • WakeLock — dilepaskan paksa untuk aplikasi di luar Whitelist
  • JobScheduler — tugas dikelompokkan dalam jendela layanan dengan interval eksponensial
  • Sinkronisasi — Account SyncManager ditangguhkan hingga keluar dari Doze

Whitelist dan pengecualian

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.

Cara memeriksa status Whitelist

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 Doze Mode

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.

bash
# 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

Memeriksa kerja aplikasi

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.

Praktik terbaik untuk Doze Mode

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.

Gunakan WorkManager

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).

Foreground Service untuk tugas kritis

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.

FCM high-priority untuk notifikasi

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.

  • WorkManager — API yang lebih disukai untuk semua tugas latar belakang yang dapat ditunda
  • Foreground Service — untuk tugas kritis dengan notifikasi yang terlihat
  • FCM high-priority — untuk mengirimkan pesan mendesak dengan membangunkan perangkat
  • Jangan minta Whitelist tanpa kebutuhan mendesak — ini memperburuk pengalaman pengguna
  • Uji aplikasi di Light dan Deep Doze melalui ADB sebelum rilis

Pertanyaan yang Sering Diajukan

Apa itu Doze Mode di Android?

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.

Fase apa saja dari Doze Mode yang ada?

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.

Batasan apa yang diberlakukan Doze pada aplikasi?

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.

Bagaimana cara menambahkan aplikasi ke Whitelist Doze?

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.

Bagaimana cara menguji aplikasi dalam Doze Mode?

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

  • Doze Mode — mode tidur Android 6+, aktif saat perangkat tidak aktif untuk menghemat baterai
  • Light Doze — fase ringan setelah 5–30 menit, batasan parsial pada AlarmManager dan jaringan
  • Deep Doze — fase dalam setelah 60–90 menit imobilitas dengan jendela layanan hingga 12 jam
  • Batasan — blokir jaringan, penundaan AlarmManager, pelepasan WakeLock
  • Pengecualian — Foreground Service, FCM high-priority, aplikasi Whitelist
  • WorkManager — API yang direkomendasikan untuk tugas latar belakang, beradaptasi otomatis dengan Doze
  • Pengujian — pemeriksaan wajib melalui ADB (dumpsys deviceidle) sebelum rilis

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.

Diskusikan proyek

Baca juga