Doze ile platformda güç yönetimi

Android, cihazın pil ömrünü iyileştirmek için cihaz kullanımını ve uyanıklığını izleyerek cihaz durumunu etkileyebilir. Platform, cihaz kullanılmadığında etkinliklerin çalışmasını duraklatmak için uyku durumuna girebilir.

Doz hakkında

Uyku modu, cihaz uzun süre kullanılmadığında uygulamanın arka plan CPU ve ağ etkinliğini erteleyerek pil ömrünü uzatır.

Uyku modundaki boş cihazlar, periyodik olarak bakım aralığına girer. Bu süre zarfında uygulamalar bekleyen işleri (senkronizasyonlar, işler vb.) tamamlayabilir. Daha sonra Uyku modu daha uzun süre uyku modunda kalır ve ardından başka bir bakım dönemi başlar. Platform, Doze uyku/bakım sırasını devam ettirerek en fazla birkaç saat uyku süresine ulaşılana kadar her seferinde boşta kalma süresini artırır. Uyku modundaki bir cihaz her zaman hareketi algılar ve hareket algılanırsa hemen Uyku modundan çıkar.

Android 7.0 ve sonraki sürümler, Doze'i kullanıcı hareket halindeyken bile cihaz ekranını her kapattığında daha hafif optimizasyonlar tetikleyecek şekilde genişletir. Bu sayede pil ömrü uzar.

Kritik sistem hizmetleri genellikle cihaz üreticileri tarafından Doze'den muaf olacak şekilde ayarlanır. Kullanıcılar, Ayarlar menüsünü kullanarak belirli uygulamaları Doze'den muaf tutabilir. Ancak uygulamaları muaf tutmak cihazın pilini tüketebilir. Doze, AOSP'de varsayılan olarak devre dışıdır. Doze'i etkinleştirmeyle ilgili ayrıntılar için Doz'u entegre etme başlıklı makaleyi inceleyin.

Uyku modu koşulları

Doze desteği için cihazda Firebase Cloud Messaging (FCM) gibi bir bulut mesajlaşma hizmetinin bulunması gerekir. Bulut mesajları gibi harici tetikleyici etkinlikler, cihaz Uyku modundayken uygulamaları geçici olarak uyandırarak çalışmasını sağlayabilir.

Tam Doze desteği için cihazda önemli hareket algılayıcı (SMD) da gereklidir. Ancak Android 7.0 ve sonraki sürümlerdeki hafif Doze modu için SMD gerekmez. Uyku modu, aşağıdaki özelliklere sahip bir cihazda etkinleştirilirse:

  • SMD'si vardır, tam Doze optimizasyonları gerçekleşir (hafif optimizasyonlar dahildir).
  • SMD'si yoktur, yalnızca hafif Doze optimizasyonları gerçekleşir.

Doz yaşam döngüsü

Doze, platform cihazın boşta olduğunu algıladığında başlar ve bir veya daha fazla çıkış ölçütü etkinliği gerçekleştiğinde sona erer.

Platform, bir cihazın boşta olduğunu aşağıdaki durumlarda algılar:

  • Cihaz sabit (SMD kullanılıyor).
  • Cihaz ekranı bir süre boyunca kapalı kalır.

Pil ile çalışan bir cihaz güç şarj cihazına takılıyken Uyku modu etkinleştirilmez.

Uyku modu sırasında

Platform, sistemi uyku durumunda tutmaya çalışır. Bakım aralığı sırasında normal işlemleri düzenli olarak devam ettirir ve ardından cihazı tekrar tekrar daha uzun süreler boyunca uykuya döndürür. Uyku sırasında aşağıdaki kısıtlamalar etkindir:

  • Uygulamaların ağa erişmesine izin verilmez.
  • Uygulama uyandırıcı kilitleri yoksayılır.
  • Alarmlar erteleniyor. Alarm saati alarmları ve setAndAllowWhileIdle() kullanılarak ayarlanan alarmlar (Uyku modundayken uygulama başına 15 dakikada 1 ile sınırlıdır) hariçtir. Bu muafiyet, etkinlik hatırlatıcısı bildirimleri göstermesi gereken uygulamalar (Takvim gibi) içindir.
  • Kablosuz ağ taramaları yapılmaz.
  • SyncAdapter senkronizasyonu ve JobScheduler işleri sonraki bakım dönemine kadar ertelendi.
  • SMS ve MMS mesajları alan uygulamalar, işleme işlemlerini tamamlayabilmeleri için geçici bir beyaz listeye eklenir.

Çık

Platform, aşağıdakileri algıladığında cihazı Uyku modundan çıkarır:

  • Kullanıcının cihazla etkileşimi
  • Cihaz hareketi
  • Cihaz ekranı açılıyor
  • Yaklaşan AlarmClock alarmı

Bildirimler, cihazın Doze modundan çıkmasına neden olmaz.

Android 7.0 ve sonraki sürümler, ekran kapalıyken ve cihaz boşta olmadan önce hafif bir uyku modu etkinleştirerek Doze'i genişletir.

Şekil 1. Hareketli ve sabit cihazlar için güç tasarrufu modları.

İşlem Doz Hafif Uyku
Tetikleyici Ekran kapalı, pilde, sabit Ekran kapalı, pilde (fişten çekilmiş)
Zamanlama Bakımla birlikte art arda artan dönemler Bakım dönemleri içeren tekrarlanan N dakikalık dönemler
Kısıtlamalar Ağ erişimi, uyanma kilidi veya GPS/kablosuz tarama yok; alarmlar ve işler/senkronizasyonlar ertelendi Ağ erişimi yok; bakım dönemleri hariç işler/senkronizasyonlar ertelendi
Davranış Yalnızca yüksek öncelikli push bildirim mesajları alınır Alınan tüm gerçek zamanlı mesajlar (anlık mesajlar, aramalar vb.); yüksek öncelikli push bildirim mesajı geçici ağ erişimini etkinleştirir
Çık Hareket, ekran açık veya alarm saati alarmı Ekran açık

Uygulamayı Beklemeye Alma ile etkileşim

  • Doz modunda geçirilen süre, uygulamayı beklemeye alma süresine dahil edilmez.
  • Cihaz Uyku modundayken, boşta olan uygulamaların en az günde bir kez normal işlemleri gerçekleştirmesine izin verilir.

Doze'i entegre etme

Doze etkinleştirildiğinde, SENSOR_TYPE_SIGNIFICANT_MOTION desteği sunan cihazlar tam Doze optimizasyonlarını (hafif optimizasyonlar dahil) gerçekleştirir. SMD'si olmayan cihazlar ise yalnızca hafif Doze optimizasyonlarını gerçekleştirir. Android, uygun Doze optimizasyonlarını otomatik olarak seçer ve tedarikçi firma yapılandırması gerekli değildir.

Bir cihazda Doze'i etkinleştirmek için:

  1. Cihazın bulut mesajlaşma hizmetinin yüklü olduğunu doğrulayın.
  2. Cihaz yer paylaşımı yapılandırma dosyasında overlay/frameworks/base/core/res/res/values/config.xml, config_enableAutoPowerModes değerini true olarak ayarlayın:
    <bool name="config_enableAutoPowerModes">true</bool>
    
    AOSP'de bu parametre varsayılan olarak false (Doze devre dışı) değerine ayarlanmıştır.
  3. Önceden yüklenmiş uygulama ve hizmetlerin:
  4. Gerekli hizmetlerin Doze'den muaf olduğunu onaylayın.

İpuçları

Uygulamaları test etme ve optimize etme

Tüm uygulamaları (özellikle önceden yüklü uygulamaları) Doze modunda test edin. Ayrıntılar için Doz ve Uygulamayı Beklemeye Alma ile test etme başlıklı makaleyi inceleyin.