Android, cihazın pil ömrünü iyileştirmek için cihazın kullanımını ve uyanıklığını izleyerek cihazın durumunu etkileyebilir. Platform, cihaz kullanılmadığında etkinliklerin çalışmasını duraklatmak için uyku durumuna girebilir.
Doze Hakkında
Doze, bir cihaz uzun süre kullanılmadığında uygulamanın arka plan CPU'sunu ve ağ etkinliğini erteleyerek pil ömrünü uzatır.
Doze'daki boşta kalan cihazlar periyodik olarak bir bakım penceresine girer ve bu süre zarfında uygulamalar bekleyen işleri (senkronizasyonlar, işler vb.) tamamlayabilir. Doze daha sonra daha uzun bir süre boyunca uyku moduna geçer ve ardından başka bir bakım penceresi gelir. Platform, maksimum birkaç saatlik uyku süresine ulaşılana kadar her seferinde boşta kalma süresini artırarak Doze uyku/bakım sırasını sürdürür. Doze'daki bir cihaz her zaman hareketin farkında kalır ve hareket algılanırsa hemen Doze'dan ayrılır.
Android 7.0 ve üzeri, Doze'u genişleterek, kullanıcı cihaz ekranını her kapattığında, kullanıcı hareket etmeye devam etse bile daha hafif bir optimizasyon setini tetikleyerek daha uzun pil ömrü sağlar.
Kritik sistem hizmetleri genellikle cihaz üreticileri tarafından Doze'dan muaf tutulacak şekilde kurulmaktadır. Kullanıcılar ayrıca Ayarlar menüsünü kullanarak belirli uygulamaları Doze'dan muaf tutabilirler. Ancak uygulamaları muaf tutmak cihazın pilinin tükenmesine neden olabilir. Doze, AOSP'de varsayılan olarak devre dışıdır ; Doze'u etkinleştirmeyle ilgili ayrıntılar için bkz. Doze'u Entegre Etme .
Doz gereksinimleri
Doze desteği, cihazın Firebase Cloud Messaging (FCM) gibi bir bulut mesajlaşma hizmetine sahip olmasını gerektirir. Bulut mesajları gibi harici tetikleyici olaylar, cihaz Doze modundayken çalışmak üzere uygulamaları geçici olarak uyandırabilir.
Tam Doze desteği ayrıca cihazda önemli bir hareket dedektörü (SMD) gerektirir; ancak Android 7.0 ve sonraki sürümlerdeki hafif Doze modu SMD gerektirmez. Doze aşağıdaki özelliklere sahip bir cihazda etkinleştirilmişse:
- Bir SMD'ye sahipseniz, tam Doze optimizasyonları gerçekleşir (hafif optimizasyonları içerir).
- SMD'si yoktur, yalnızca hafif Doze optimizasyonları gerçekleşir.
Doze yaşam döngüsü
Doze, platform cihazın boşta olduğunu algıladığında başlar ve bir veya daha fazla çıkış kriteri etkinliği gerçekleştiğinde sona erer.
Platform aşağıdaki durumlarda bir cihazın boşta olduğunu algılar:
- Cihaz sabittir (SMD kullanıyor).
- Cihaz ekranı bir süreliğine kapalı.
Pille çalışan bir cihaz, şarj cihazına takıldığında Doze modu devreye girmiyor.
Uyuklama sırasında
Platform, sistemi uyku durumunda tutmaya çalışır, bir bakım penceresi sırasında periyodik olarak normal işlemleri sürdürür ve ardından cihazı daha uzun tekrarlanan süreler boyunca uyku moduna döndürür. Uyku sırasında aşağıdaki kısıtlamalar etkindir:
- Uygulamaların ağ erişimine izin verilmiyor.
- Uygulama uyandırma kilitleri yoksayıldı.
- Alarmlar ertelendi.
setAndAllowWhileIdle()
kullanılarak ayarlanan alarm saati alarmlarını ve alarmları hariç tutar (Doze'dayken uygulama başına 15 dakikada 1 alarmla sınırlıdır). Bu muafiyet, etkinlik hatırlatma bildirimleri göstermesi gereken uygulamalara (Takvim gibi) yöneliktir. - Wi-Fi taramaları gerçekleştirilmiyor.
-
SyncAdapter
senkronizasyonları veJobScheduler
işleri bir sonraki bakım penceresine kadar ertelenir. - SMS ve MMS mesajları alan uygulamalar, işlemlerini tamamlayabilmeleri için geçici bir beyaz listeye alınır.
çıkış
Platform aşağıdakileri tespit ettiğinde cihazdan Doze'dan çıkar:
- Cihazla kullanıcı etkileşimi
- Cihaz hareketi
- Cihaz ekranı açılıyor
- Yaklaşan AlarmSaat alarmı
Bildirimler cihazın Doze'dan çıkmasına neden olmaz.
Android 7.0 ve üzeri, ekran kapalıyken, cihaz boşta kalmadan önce hafif bir uyku modunu etkinleştirerek Doze'un kapsamını genişletir.
Şekil 1. Sabit olmayan ve sabit cihazlar için uyku modları.
Aksiyon | Uyuklamak | Hafif Doze |
---|---|---|
Tetiklemek | Ekran kapalı, pil açık, sabit | Ekran kapalı, pil açık (fişi takılı değil) |
Zamanlama | Bakım ile art arda artan periyotlar | Bakım aralıklarıyla tekrarlanan N dakikalık periyotlar |
Kısıtlamalar | Ağ erişimi, uyandırma kilidi veya GPS/Wi-Fi taraması yok; alarmlar ve işler/senkronizasyonlar ertelendi | Ağ erişimi yok; bakım pencereleri dışında işler/senkronizasyonlar ertelendi |
Davranış | Yalnızca yüksek öncelikli anında bildirim iletileri alındı | Alınan tüm gerçek zamanlı mesajlar (anlık mesajlar, çağrılar vb.); yüksek öncelikli anında bildirim mesajı geçici ağ erişimine olanak sağlar |
çıkış | Hareket, ekran açık veya alarm saati alarmı | Ekran açık |
Uygulama Bekleme ile Etkileşim
- Doze'da geçirilen süre, Uygulamayı Beklemeye Alma süresine dahil edilmez.
- Cihaz Doze'dayken, boşta olan uygulamaların günde en az bir kez normal işlemlerini gerçekleştirmesine izin verilir.
Doze'u entegre edin
Doze etkinleştirildiğinde, SENSOR_TYPE_SIGNIFICANT_MOTION
destekleyen cihazlar tam Doze optimizasyonlarını (hafif optimizasyonlar dahil) gerçekleştirir; SMD'si olmayan cihazlar yalnızca hafif Doze optimizasyonlarını gerçekleştirir. Android, uygun Doze optimizasyonlarını otomatik olarak seçer ve satıcı yapılandırması gerekli değildir.
Bir cihazda Doze'u etkinleştirmek için:
- Cihazda bir bulut mesajlaşma hizmetinin yüklü olduğunu doğrulayın.
- Cihaz yer paylaşımı yapılandırma dosyasında
overlay/frameworks/base/core/res/res/values/config.xml
,config_enableAutoPowerModes
true
olarak ayarlayın:<bool name="config_enableAutoPowerModes">true</bool>
AOSP'de bu parametre varsayılan olarakfalse
(Doze devre dışı) olarak ayarlanmıştır. - Önceden yüklenmiş uygulama ve hizmetlerin:
- Güç tasarrufu optimizasyonu yönergelerini kullanın. Ayrıntılar için bkz. Uygulamaları test etme ve optimize etme .
VEYA
- Doze ve App Standby'dan muaftır. Ayrıntılar için bkz. Uygulamaları muaf tutma .
- Güç tasarrufu optimizasyonu yönergelerini kullanın. Ayrıntılar için bkz. Uygulamaları test etme ve optimize etme .
- Gerekli hizmetlerin Doze'dan muaf olduğunu doğrulayın.
İpuçları
- Mümkünse alt mesajlaşma için FCM'yi kullanın.
- Kullanıcılarınızın hemen bir bildirim görmesi gerekiyorsa FCM yüksek öncelikli mesajını kullanın.
- İlk mesaj yükünde yeterli bilgi sağlayın (sonraki gereksiz ağ erişimini önlemek için).
-
setAndAllowWhileIdle()
vesetExactAndAllowWhileIdle()
ile kritik alarmları ayarlayın.
Uygulamaları test edin ve optimize edin
Tüm uygulamaları (özellikle önceden yüklenmiş uygulamaları) Doze modunda test edin. Ayrıntılar için Doze ve Uygulamayı Beklemeye Alma ile Test Etme bölümüne bakın.