Doze Mode: özü, aşamaları ve enerji tasarrufu mekanizması

Yazar: IT Sectr Yayınlanma: 2026-03-28 Okuma süresi: 10 dk

Doze Mode, Android 6.0 Marshmallow sürümünde tanıtılan bir enerji tasarrufu özelliğidir ve cihaz boştayken uygulamaların arka plan etkinliğini önemli ölçüde kısıtlar. Sistem, pil ömrünü uzatmak için ağ isteklerini, senkronizasyonu ve JobScheduler'ı erteleyerek uygulamaları düşük güç tüketimi durumuna geçirir. Android Developers, 2025 analizine göre, Doze Mode cihazın bekleme süresini modele ve işletim sistemi sürümüne bağlı olarak 2–3 kat artırabilir.

Önemli noktalar

  • Doze Mode — Android 6+ uyku modu, boştayken arka plan etkinliğini kısıtlar
  • İki aşama — Light Doze (hafif uyku) ve Deep Doze (derin uyku) farklı kısıtlamalarla
  • Bakım pencereleri — Deep Doze'de uygulamaların görevleri gerçekleştirebildiği kısa süreler
  • Beyaz Liste — Doze sırasında arka planda çalışmasına izin verilen uygulamalar için istisnalar
  • GCM/FCM — yüksek öncelikli push bildirimleri cihazı Doze'dan uyandırır

Doze Mode Nedir

Doze Mode, cihaz şarj cihazına bağlı değilken, ekran kapalıyken ve kullanıcı belirli bir süre boyunca cihazla etkileşime geçmemişken etkinleşen yerleşik bir Android enerji tasarrufu mekanizmasıdır. Doze'un amacı, bekleme modunda pil ömrünü en üst düzeye çıkarmak için uygulamaların arka plan etkinliğini en aza indirmektir. Sistem JobScheduler'ı, hesap senkronizasyonunu, AlarmManager'ı ve ağ isteklerini erteler.

Bu mod Android 6.0 Marshmallow (API 23) sürümünde tanıtılmış ve sonraki sürümlerde önemli ölçüde geliştirilmiştir. Android 7.0 Nougat, cihaz hareket halindeyken etkinleşen ikinci bir aşama (Light Doze) getirmiştir. Android 8.0, Doze ile birlikte çalışan arka plan hizmetlerine ek kısıtlamalar eklemiştir. Android 12+'da Doze, kullanıcı davranışını analiz eden güncellenmiş bir pil yönetim sistemi ile entegre edilmiştir.

Şunu anlamak önemlidir: Doze Mode uygulamaları tamamen devre dışı bırakmaz. Onları ertelenmiş görevlerle bir duruma geçirir ancak süreçleri sonlandırmaz. Bildirimli bir Foreground Service çalışmaya devam eder, yüksek öncelikli push bildirimleri (FCM high-priority) teslim edilir ve alarmlar planlandığı gibi çalar. Doze yalnızca kullanıcının o anda görmediği veya beklemediği arka plan işlemlerini etkiler.

Etkinleştirme Koşulları

Doze Mode tüm koşullar karşılandığında etkinleşir: ekran 30 dakikadan fazla kapalı (ilk etkinleştirme), cihaz hareketsiz (ivmeölçer kullanarak) ve şarj cihazına bağlı değil. Kullanıcı telefonu eline alırsa veya şarj cihazını takarsa, Doze derhal devre dışı bırakılır. Android 7+'da, Light Doze cihaz hareket halindeyken bile yalnızca 5 dakikalık hareketsizlikten sonra etkinleşir.

Doze Mode Nasıl Çalışır

Doze Mode, sensörlerin, ekranın ve şarj cihazının durumunu analiz eden sistem hizmeti DeviceIdleController aracılığıyla arka plan etkinliğini yönetir. Tüm etkinleştirme koşulları karşılandığında, sistem uygulamaları bekleme moduna geçirir ve isteklerini bakım pencerelerinde gruplandırır. Bu pencerelerin içinde, ertelenen tüm görevler — ağ çağrıları, senkronizasyon, AlarmManager — toplu olarak yürütülür.

Sistem PowerManager'ı, hangi uygulamaların Doze'dan çıkabileceğini kontrol eder. Yüksek öncelikli push bildirimleri (FCM high-priority) bir mesajı teslim etmek için cihazı uyandırabilir. Sistem ayrıca, kullanıcının pil optimizasyonu Beyaz Listesine eklediği uygulamalar için Doze'u görmezden gelir. Diğer tüm uygulamalar bir sonraki bakım penceresini beklemelidir.

Deep Doze'deki bakım pencerelerinin süresi katlanarak artar: ilk pencere 1 saat sonra, ikinci 2 saat sonra, üçüncü 4 saat sonra ve maksimum 12 saat aralığa kadar. Bu, cihaz Doze'da ne kadar uzun süre kalırsa, uygulamaların arka plan görevlerini o kadar az sıklıkta gerçekleştirebileceği anlamına gelir — pil mümkün olduğunca agresif bir şekilde korunur.

Ağ İstekleri Üzerindeki Etkisi

Doze Mode'da, bir bakım penceresi açılana kadar tüm ağ istekleri askıya alınır. Tek istisnalar, FCM yüksek öncelikli mesajlar (yükte “high_priority” etiketiyle) ve AlarmManager'dan setAndAllowWhileIdle() veya setExactAndAllowWhileIdle() bayraklarıyla gelen sinyallerdir. Retrofit, OkHttp veya Volley aracılığıyla yapılan normal ağ çağrıları bir pencere açılana kadar yürütülmez.

Doze Mode Aşamaları

Doze Mode iki aşamadan oluşur: Light Doze (hafif uyku) ve Deep Doze (derin uyku). Her aşama kendi kısıtlamalarını uygular ve farklı etkinleştirme eşiklerine sahiptir. Aşamalar arasındaki farkı anlamak, enerji tasarrufu moduna dayanıklı arka plan görevleri tasarlayan bir geliştirici için kritiktir.

Light Doze (Hafif Uyku)

Light Doze, cihazın 5–30 dakika hareketsiz kalmasından sonra (ekran kapalı, hareket yok) etkinleşir. Bu aşamada ağ istekleri ve senkronizasyon askıya alınır, ancak AlarmManager ve JobScheduler küçük gecikmelerle çalışmaya devam eder. Uygulamalar bir push bildirimi aldığında veya bir şarj cihazına bağlandığında Light Doze'dan çıkabilir. Light Doze tam hareketsizlik gerektirmez — cihaz hareket halinde olabilir.

Deep Doze (Derin Uyku)

Deep Doze, cihaz hareketsizken (ivmeölçer hareket algılamaz) 60–90 dakikalık hareketsizlikten sonra gerçekleşir. Deep Doze'de sistem, görevleri ertelemede önemli ölçüde daha agresiftir: bakım pencereleri daha seyrek açılır (katlanarak artan aralıkla), AlarmManager yalnızca setAndAllowWhileIdle() bayraklarıyla çalışır ve WakeLock normal şekilde çalışmaz. Beyaz Liste'de olmayan uygulamalar neredeyse tamamen arka plan etkinliğinden yoksun bırakılır.

ParametreLight DozeDeep Doze
Etkinleştirme süresi5–30 dakika60–90 dakika
Hareket gereksinimiGerekli değilHareketsizlik
Pencere aralığı10–60 dakika1–12 saat
AlarmManagerGecikmelerle çalışırSadece withAllowWhileIdle
Pencerelerde ağKullanılabilirKullanılabilir

Doze Mode Kısıtlamaları

Doze Mode, bir geliştiricinin uygulama tasarlarken dikkate alması gereken birkaç kategori kısıtlama getirir. Bu kısıtlamaları görmezden gelmek, arka plan görevlerinin yürütülmemesine ve kullanıcının uygulamanın hatalı davranışını görmesine neden olur — eksik güncellemeler, gönderilmemiş mesajlar, tamamlanmamış senkronizasyon.

Ağ Kısıtlamaları

Tüm ağ istekleri bir bakım penceresi açılana kadar engellenir. Bu, HTTP çağrıları, WebSocket bağlantıları ve dosya indirmeleri için geçerlidir. İstisna, Doze'dan bağımsız ayrı bir Google Play Services kanalından geçen FCM yüksek öncelikli mesajlardır. Kritik veri senkronizasyonu için, NetworkType.CONNECTED politikasıyla WorkManager kullanılması önerilir.

AlarmManager Kısıtlamaları

Deep Doze'deki AlarmManager, setAndAllowWhileIdle() ve setExactAndAllowWhileIdle() yöntemleriyle oluşturulanlar dışındaki tüm alarmları erteler. Ancak, bu yöntemlerin bile bir sınırı vardır — uygulama başına 9 dakikada 1'den fazla tetikleme olmaz. Deep Doze'de setExact() ile tam alarmlar belirtilen zamanda tetiklenmeyi garanti etmez.

WakeLock Kısıtlamaları

WakeLock, Doze Mode'da alışılmadık şekilde davranır: sistem, Beyaz Liste dışındaki uygulamalar için uyandırma kilidini tutmaz. Bir uygulama doğru şekilde PARTIAL_WAKE_LOCK almış olsa bile, Deep Doze başladığında sistem onu zorla serbest bırakabilir. Doze'da görev yürütmeyi garanti etmenin tek yolu, bir bildirimle Foreground Service kullanmaktır.

  • — FCM high-priority hariç tüm istekler bakım penceresine kadar ertelenir
  • AlarmManager — tam alarmlar ertelenir; setAndAllowWhileIdle — 1/9 dakikadan fazla değil
  • WakeLock — Beyaz Liste dışındaki uygulamalar için zorla serbest bırakılır
  • JobScheduler — görevler katlanarak artan aralıkla bakım pencerelerinde gruplandırılır
  • Senkronizasyon — Doze'dan çıkılana kadar Account SyncManager askıya alınır

Beyaz Liste ve İstisnalar

Doze Beyaz Listesi, sistemin minimum kısıtlamalarla enerji tasarrufu modunda arka plan etkinliğine izin verdiği uygulamaların listesidir. Kullanıcı, Ayarlar → Pil → Pil Optimizasyonu aracılığıyla listeye manuel olarak uygulama ekleyebilir. Sistem uygulamaları, başlatıcılar ve Google Play Services varsayılan olarak Beyaz Liste'de bulunur.

Bir geliştirici, ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS Intent'i ile sistem diyaloğu aracılığıyla Beyaz Liste'ye eklenmeyi talep edebilir. Bunun için manifestte REQUEST_IGNORE_BATTERY_OPTIMIZATIONS izni gerekir. Ancak Google, geçerli bir neden olmadan istisna talep edilmesini önermez — bu yeteneği kötüye kullanan uygulamalar Google Play'de yayınlanırken reddedilme riskiyle karşı karşıyadır.

Beyaz Liste olmadan, bir uygulama cihazı Doze'dan uyandırmak için FCM yüksek öncelik kullanabilir. Bu tür her mesaj, uygulamaya bir görevi yerine getirmesi için kısa bir pencere (10–30 saniye) verir. Daha uzun işlemler için uygulamanın, Doze bakım pencereleri içinde çalışmaya devam eden bir Foreground Service başlatması gerekir. Google ayrıca belirli uygulama türleri için bir muafiyet mekanizması sağlar: navigasyon, tıbbi, mesajlaşma.

Beyaz Liste Durumu Nasıl Kontrol Edilir

Bir uygulamanın pil optimizasyonu Beyaz Listesinde olup olmadığını kontrol etmek için powerManager.isIgnoringBatteryOptimizations() yöntemi kullanılır. Yöntem false döndürürse, uygulama tüm Doze kısıtlamalarına tabidir. true döndürürse, uygulama Deep Doze'de bile kısıtlama olmadan Wakelock, AlarmManager ve ağı kullanabilir. Ancak, bu ayrıcalığı kötüye kullanmak kullanıcılardan kötü değerlendirmelere yol açacaktır.

Doze Mode Test Etme

Doze Mode'da uygulama davranışını test etmek zorunlu bir geliştirme adımıdır, çünkü Doze arka plan işlevlerini bozabilir. Android, cihazı zorla Light Doze ve Deep Doze'ye geçirmek için ADB aracılığıyla komut satırı araçları sağlar. Testler, Android 6.0+'lı fiziksel bir cihaz veya öykünücü üzerinde yapılmalıdır.

Light Doze'a girmek için adb shell dumpsys deviceidle step light komutu kullanılır. Deep Doze için — adb shell dumpsys deviceidle step deep. adb shell dumpsys deviceidle force-idle deep komutu, standart zaman aşımını beklemeden cihazı derhal Deep Doze'ye geçirir. Testten sonra adb shell dumpsys deviceidle unforce komutuyla Doze'dan çıkılır.

bash
# Light Doze'a Zorla Gir
$ adb shell dumpsys deviceidle step light

# Deep Doze'a Zorla Gir
$ adb shell dumpsys deviceidle step deep

# Derhal Deep Doze'a Geç
$ adb shell dumpsys deviceidle force-idle deep

# Doze'dan Çık
$ adb shell dumpsys deviceidle unforce

# Doze Durumunu Görüntüle
$ adb shell dumpsys deviceidle

Uygulama Çalışmasını Kontrol Etme

Doze Mode'a geçtikten sonra, ağ isteklerinin çalışıp çalışmadığını (ertelenmelidir), AlarmManager'ın tetiklenip tetiklenmediğini, FCM mesajlarının teslim edilip edilmediğini ve WorkManager görevlerinin doğru şekilde yürütülüp yürütülmediğini kontrol edin. WorkManager Doze'da çalışmaya devam eder: görevleri bakım pencerelerinde yürütülür. Ancak, bir görev acil yürütme gerektiriyorsa, setExpedited() belirtin veya bir Foreground Service kullanın.

Doze Mode İçin En İyi Uygulamalar

Doze Mode'a dayanıklı bir uygulama geliştirmek, arka plan görevlerine yaklaşımın yeniden düşünülmesini gerektirir. Google, uygulamanın arka plan işlemlerinin anında yürütülmesine bağlı kalmadan, Doze'un tüm kısıtlamaları altında doğru şekilde çalışacak şekilde tasarlanmasını önerir. Temel ilke, ertelenebilecek tüm arka plan görevleri için WorkManager kullanmaktır.

WorkManager Kullanın

WorkManager, Doze'a otomatik olarak uyum sağladığı için arka plan görevleri için Google tarafından önerilen API'dir. WorkManager, eski sürümlerde JobScheduler (API 23+) veya AlarmManager + BroadcastReceiver kullanır. WorkManager görevleri, en yakın Doze bakım penceresinde veya gerekirse Expedited Work (kaputun altında Foreground Service) aracılığıyla derhal yürütülür.

Kritik Görevler İçin Foreground Service

Bir görev ertelenemiyorsa (medya oynatma, navigasyon, VoIP), zorunlu bir bildirimle Foreground Service kullanın. Foreground Service, Doze'dan muafiyet alır: bir WakeLock tutabilir ve ağ isteklerini yürütebilir. Ancak, bir Foreground Service bile bazı görev türleri için Deep Doze bakım penceresi politikalarına tabidir — örneğin, dataSync.

Bildirimler İçin FCM Yüksek Öncelik

Acil dikkat gerektiren mesajları (gelen çağrı, acil bildirim) teslim etmek için FCM yüksek öncelikli mesajlar kullanın. Bu tür mesajlar cihazı Doze'dan uyandırır ve uygulamaya işleme için kısa bir pencere verir. Normal bildirimler için yüksek öncelik kullanmayın — bu, pilin hızla tükenmesine neden olur ve Google Play tarafından politika ihlali olarak değerlendirilebilir.

  • WorkManager — ertelenebilir tüm arka plan görevleri için tercih edilen API
  • Foreground Service — görünür bildirimli kritik görevler için
  • FCM yüksek öncelik — cihazı uyandırarak acil mesajları teslim etmek için
  • Kritik ihtiyaç olmadan Beyaz Liste talep etmeyin — kullanıcı deneyimini kötüleştirir
  • Sürümden önce ADB aracılığıyla Light ve Deep Doze'de uygulamayı test edin

Sıkça Sorulan Sorular

Android'de Doze Mode nedir?

Doze Mode, cihaz kullanılmadığında (ekran kapalı, hareket yok) uygulamaların arka plan etkinliğini kısıtlayan Android 6+ enerji tasarrufu modudur. Sistem, pil tasarrufu için ağ isteklerini, senkronizasyonu ve JobScheduler'ı erteleyerek bakım pencerelerinde gruplandırır.

Doze Mode'un hangi aşamaları vardır?

Doze Mode iki aşamaya sahiptir: Light Doze (hafif uyku) 5–30 dakika sonra etkinleşir ve AlarmManager'ın gecikmelerle çalışmasına izin verir. Deep Doze (derin uyku) 60–90 dakikalık hareketsizlikten sonra gerçekleşir ve 12 saate kadar bakım pencereleriyle arka plan görevlerini agresif şekilde kısıtlar.

Doze, uygulamalara hangi kısıtlamaları getirir?

Doze ağ isteklerini engeller, AlarmManager'ı erteler (setAndAllowWhileIdle hariç), WakeLock'ı zorla serbest bırakır ve JobScheduler'ı bakım pencerelerinde gruplandırır. İstisnalar arasında Foreground Service, FCM yüksek öncelik ve kullanıcının Beyaz Liste'sindeki uygulamalar bulunur.

Bir uygulama Doze Beyaz Liste'sine nasıl eklenir?

Manifestte REQUEST_IGNORE_BATTERY_OPTIMIZATIONS iznini talep edin ve ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS eylemiyle bir Intent gönderin. Sistem kullanıcıya bir diyalog gösterecektir. Beyaz Liste'ye ekleme, Google'ın yalnızca kritik öneme sahip uygulamalar için kullanılmasını önerdiği bir ayrıcalıktır.

Doze Mode'da bir uygulama nasıl test edilir?

ADB komutlarını kullanın: Deep Doze'a girmek için adb shell dumpsys deviceidle force-idle deep, Light Doze için adb shell dumpsys deviceidle step light, çıkmak için adb shell dumpsys deviceidle unforce. Her modda WorkManager, AlarmManager ve FCM'yi kontrol edin.

Özet

  • Doze Mode — Android 6+ uyku modu, pil tasarrufu için cihaz boştayken etkinleşir
  • Light Doze — 5–30 dakika sonra hafif aşama, AlarmManager ve ağ üzerinde kısmi kısıtlamalar
  • Deep Doze — 60–90 dakika hareketsizlikten sonra derin aşama, 12 saate kadar bakım pencereleriyle
  • Kısıtlamalar — ağ engelleme, AlarmManager erteleme, WakeLock serbest bırakma
  • İstisnalar — Foreground Service, FCM yüksek öncelik, Beyaz Liste uygulamaları
  • WorkManager — arka plan görevleri için önerilen API, Doze'a otomatik uyum sağlar
  • Test — sürümden önce ADB (dumpsys deviceidle) ile zorunlu doğrulama

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun