Güç yönetimi

Android 9 (API düzeyi 28), cihaz güç yönetimini iyileştirmek için yeni özellikler sunar. Önceki sürümlerde bulunan özelliklerle birlikte bu değişiklikler, sistem kaynaklarının onlara en çok ihtiyaç duyan uygulamalara sağlandığından emin olmaya yardımcı oluyor.

Güç yönetimi özellikleri iki kategoriye ayrılır:

Uygulama bekleme modu grupları
Sistem, kullanıcının kullanım alışkanlıklarına bağlı olarak uygulamaların CPU veya pil gibi cihaz kaynaklarına erişimini sınırlandırır. Bu, Android 9 için yeni bir özelliktir.
Pil tasarrufuyla ilgili iyileştirmeler
Pil tasarrufu açıldığında, sistem tüm uygulamalara kısıtlamalar uygular. Bu, Android 9'da iyileştirilmiş mevcut bir özelliktir.

Uygulamayı Beklemeye Alma Grupları

Android 9'da, yeni bir pil yönetimi özelliği olan Uygulama Bekleme Paketleri kullanıma sunuluyor. Uygulama Beklemeye Alma Paketleri, uygulamaların ne kadar yakın zamanda ve ne sıklıkta kullanıldığına bağlı olarak uygulamaların kaynak isteklerine öncelik vermelerine yardımcı olur. Uygulama kullanım kalıplarına göre her uygulama beş öncelikli paketten birine yerleştirilir. Sistem, her uygulamanın kullanabildiği cihaz kaynaklarını, uygulamanın bulunduğu pakete bağlı olarak sınırlandırır.

Beş paket, uygulamaları aşağıdaki özelliklere göre gruplara ayırır:

Etkin

Kullanıcı şu anda uygulamayı kullanıyorsa uygulama etkin pakettedir. Örneğin:

  • Uygulama bir etkinlik başlattı
  • Uygulama bir ön plan hizmeti çalıştırıyor
  • Uygulamanın, ön plan uygulaması tarafından kullanılan içerik sağlayıcısıyla ilişkilendirilmiş bir senkronizasyon bağdaştırıcısı var.
  • Kullanıcı, uygulamadaki bir bildirimi tıklar

Bir uygulama etkin pakette yer alıyorsa sistem, uygulamanın işleri, alarmları veya FCM mesajlarına herhangi bir kısıtlama uygulamaz.

Çalışma seti

Bir uygulama sık çalışıyorsa ancak şu anda etkin değilse çalışma grubu paketindedir. Örneğin, kullanıcının çoğu gün kullanıma sunduğu bir sosyal medya uygulaması muhtemelen çalışır durumdadır. Uygulamalar dolaylı olarak kullanıldığında da çalışma seti grubuna dahil edilir.

Bir uygulama çalışır durumdaysa sistem, uygulamanın işleri çalıştırma ve alarm tetikleme kapasitesine hafif kısıtlamalar uygular. Ayrıntılı bilgi için Güç yönetimi kısıtlamaları başlıklı makaleyi inceleyin.

Sık sık

Her gün olmasa da düzenli olarak kullanılan uygulamalar sık kullanılan grupta yer alır. Örneğin, kullanıcının spor salonunda çalıştırdığı bir antrenman izleme uygulaması sık kullanılan grupta yer alabilir.

Bir uygulama sık kullanılan pakette yer alıyorsa sistem, uygulamanın iş çalıştırma ve alarm tetikleme özelliklerine daha güçlü kısıtlamalar ve yüksek öncelikli FCM mesajlarına sınır uygular. Ayrıntılı bilgi için Güç yönetimi kısıtlamaları başlıklı makaleyi inceleyin.

Nadir

Sık kullanılmayan uygulamalar nadir bulunur. Örneğin, kullanıcının yalnızca ilgili otelde kaldığı süre boyunca çalıştırdığı bir otel uygulaması nadiren bu grupta yer alabilir.

Bir uygulama nadir pakette yer alıyorsa sistem, uygulamanın iş çalıştırma, alarm tetikleme ve yüksek öncelikli FCM mesajları alma özelliğine katı kısıtlamalar uygular. Sistem, uygulamanın internete bağlanma özelliğini de sınırlandırır. Ayrıntılar için Güç yönetimi kısıtlamaları başlıklı makaleye göz atın.

Hiçbir zaman

Yüklenmiş ancak hiç çalışmayan uygulamalar, asla pakete atanır. Sistem bu uygulamalara ciddi kısıtlamalar getirir.

Sistem dinamik olarak her uygulamayı bir öncelik paketine atar ve gerektiğinde uygulamaları yeniden atar. Sistem, her bir uygulamanın kullanılma olasılığını belirlemek için makine öğrenimini kullanan ve uygulamaları uygun paketlere atayan önceden yüklenmiş bir uygulamadan yararlanabilir. Sistem uygulaması bir cihazda bulunmuyorsa sistem, varsayılan olarak uygulamaları en son ne kadar süre önce kullanıldığına göre sıralar. Uygulamalara daha yüksek öncelik veren paketlere daha fazla etkin uygulama atanır ve böylece uygulama için daha fazla sistem kaynağı kullanılabilir. Uygulama işlerinin ne sıklıkta çalışacağını, uygulamanın alarmları ne sıklıkta tetikleyebileceğini ve uygulamanın yüksek öncelikli Firebase Cloud Messaging (FCM) mesajlarını ne sıklıkta alabileceğini paket belirler. Bu kısıtlamalar yalnızca cihaz pille çalışırken geçerlidir; sistem, cihaz şarj olurken uygulamalara bu kısıtlamaları uygulamaz.

Her üretici, etkin olmayan uygulamaların paketlere nasıl atanacağıyla ilgili kendi ölçütlerini belirleyebilir. Uygulamanızın hangi pakete atandığını etkilemeye çalışmamalısınız. Bunun yerine, uygulamanızın hangi pakette olursa olsun iyi davranmasını sağlamaya odaklanın. Uygulamanız, yeni yöntemi UsageStatsManager.getAppStandbyBucket() çağırarak şu anda hangi pakette olduğunu öğrenebilir.

En iyi uygulamalar

Uygulamanızda zaten Doz ve uygulamayı beklemeye alma ile ilgili en iyi uygulamalar kullanılıyorsa yeni güç yönetimi özelliklerini kullanmak zor olmamalıdır. Ancak daha önce sorunsuz çalışan bazı uygulama davranışları artık sorunlara neden olabilmektedir.

  • Sisteminizi, uygulamanızı başka bir pakete yerleştirmek için manipüle etmeye çalışmayın. Sistemin paketleme yöntemleri değişebilir ve her cihaz üreticisi, kendi algoritmasıyla kendi paketleme uygulamasını yazabilir. Bunun yerine, uygulamanızın hangi pakette olursa olsun uygun şekilde davrandığından emin olun.
  • Bir uygulamada başlatıcı etkinliği yoksa uygulama hiçbir zaman etkin pakete yükseltilmeyebilir. Uygulamanızı bu tür bir etkinliğe sahip olacak şekilde yeniden tasarlamak isteyebilirsiniz.
  • Uygulamanın bildirimleri işleme uygun değilse kullanıcılar bildirimlerle etkileşimde bulunarak uygulamanın etkin pakete tanıtımını tetikleyemez. Bu durumda, kullanıcının yanıt vermesine olanak tanıyacak şekilde bazı uygun bildirimleri yeniden tasarlamak isteyebilirsiniz. Bazı yönergeler için Materyal Tasarım Bildirim tasarım kalıpları konusuna bakın.
  • Benzer şekilde, uygulama yüksek öncelikli FCM mesajı aldıktan sonra da bildirim göstermezse kullanıcıya uygulamayla etkileşim kurma ve dolayısıyla uygulamayı etkin pakete tanıtma şansı vermez. Aslında yüksek öncelikli FCM mesajları için amaçlanan tek kullanım, kullanıcıya bildirim göndermektir; dolayısıyla bu durum hiçbir zaman ortaya çıkmamalıdır. Bir FCM mesajını, kullanıcı etkileşimini tetiklemediğinde uygun olmayan bir şekilde yüksek öncelikli olarak işaretlemeniz, uygulamanızın kotasını tüketerek gerçekten acil FCM mesajlarının normal öncelikli olarak değerlendirilmesine neden olarak başka olumsuz sonuçlara yol açabilir.

    Not: Kullanıcı bir bildirimi tekrar tekrar kapatırsa sistem, kullanıcıya ileride bu bildirimi engelleme seçeneği sunar. Sırf uygulamanızı etkin pakette tutmaya çalışmak için kullanıcıya bildirimlerle spam yapmayın.

  • Uygulamalar birden fazla pakete bölünmüşse bu paketler farklı paketlerde olabilir ve bu nedenle farklı erişim düzeylerine sahip olabilir. Uygulamanın doğru bir şekilde davrandığından emin olmak için bu tür uygulamaları çeşitli paketlere atanmış paketlerle test ettiğinizden emin olun.

Pil tasarrufuyla ilgili iyileştirmeler

Android 9, pil tasarrufu modunda çeşitli iyileştirmeler yapıyor. Uygulanan kesin kısıtlamaları cihaz üreticisi belirler. Örneğin, AOSP derlemelerinde sistem aşağıdaki kısıtlamaları uygular:

  • Sistem, uygulamanın boşta kalmasını beklemek yerine, uygulamaları daha agresif bir şekilde bekleme moduna alır.
  • Arka planda yürütme sınırları, hedef API düzeylerinden bağımsız olarak tüm uygulamalar için geçerlidir.
  • Ekran kapalıyken konum hizmetleri devre dışı bırakılabilir.
  • Arka plan uygulamalarının ağ erişimi yoktur.

Ayrıca, cihaza özel başka güç optimizasyonları da vardır. Tüm ayrıntılar için güç yönetimi kısıtlamalarının açıklandığı sayfaya bakın.

Her zaman olduğu gibi, uygulamanızı pil tasarrufu etkin durumdayken test etmek iyi bir fikirdir. Pil tasarrufunu cihazın Ayarlar > Pil Tasarrufu ekranından manuel olarak açabilirsiniz.

Test ve sorun giderme

Yeni güç yönetimi özellikleri, Android 9'u hedeflemiş olsun veya olmasın Android 9 cihazlarda çalışan tüm uygulamaları etkiler. Uygulamanızın bu cihazlarda doğru şekilde davranmasını sağlamak önemlidir.

Güç yönetimi özelliklerinin birbiriyle nasıl etkileşimde bulunduğunu görmek için uygulamanızın temel kullanım alanlarını çeşitli koşullarda test ettiğinizden emin olun. Bazı özellikleri açıp kapatmak için Android Debug Bridge komutlarını kullanabilirsiniz.

Android Debug Bridge komutları

Güç yönetimi özelliklerinden bazılarını test etmek için Android Debug Bridge kabuk komutlarını kullanabilirsiniz.

Cihazınızı Doz'a geçirmek üzere ADB'yi kullanma hakkında bilgi için bkz. Doz ve Uygulamayı Beklemeye Alma ile test etme.

Uygulamayı Beklemeye Alma Grupları

Uygulamanızı bir Uygulama Bekleme Paketine manuel olarak atamak için ADB'yi kullanabilirsiniz. Bir uygulamanın paketini değiştirmek için aşağıdaki komutu kullanın:

$ adb shell am set-standby-bucket packagename active|working_set|frequent|rare

Bu komutu aynı anda birden fazla paket ayarlamak için de kullanabilirsiniz:

$ adb shell am set-standby-bucket package1 bucket1 package2 bucket2...

Bir uygulamanın hangi pakette olduğunu kontrol etmek için

$ adb shell am get-standby-bucket [packagename]

Bir packagename parametresi iletmezseniz komut, tüm uygulamaların paketlerini listeler. Uygulamalar ayrıca yeni UsageStatsManager.getAppStandbyBucket() yöntemini çağırarak çalışma zamanında paketini bulabilir.

Pil tasarrufu

Uygulamanızın düşük güç koşullarında nasıl davranacağını test etmek için çeşitli komutlar vardır.

Fişten çekilen cihazı simüle etmek için

$ adb shell dumpsys battery unplug

Cihazın düşük güç koşullarında nasıl davrandığını test etmek için şu komutu kullanın:

$ adb shell settings put global low_power 1

Testinizi tamamladıktan sonra şu komutla manuel cihaz ayarlarınızı geri alabilirsiniz:

$ adb shell dumpsys battery reset