Güç yönetimi

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

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

Uygulama bekleme süresi grupları
Sistem, kullanıcıları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 ile iyileştirilmiş mevcut bir özelliktir.

Uygulamayı Beklemeye Alma Grupları

Android 9'da yeni bir pil yönetimi özelliği (Uygulama Bekleme Paketleri) kullanıma sunuluyor. Uygulama Bekletme Paketleri, uygulamaların ne kadar süre önce 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ş öncelik grubundan birine yerleştirilir. Sistem, her bir uygulamanın kullanabileceği cihaz kaynaklarını, uygulamanın bulunduğu pakete göre sınırlandırır.

Beş grupta uygulamalar, aşağıdaki özelliklere göre gruplara ayrılır:

Etkin

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

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

Bir uygulama etkin paketteyse sistem uygulamanın işleri, alarmları veya FCM mesajlarıyla ilgili 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ışma grubundadır. Uygulamalar dolaylı olarak kullanıldığında da çalışma grubu paketine yükseltilir.

Bir uygulama çalışır durumdaysa sistem, uygulamanın iş çalıştırma ve alarm tetikleme yeteneğine hafif düzeyde 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

Bir uygulama, düzenli olarak kullanılıyorsa (her gün olmasa da) sık kullanılanlar arasında 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 kapasitesi için daha güçlü kısıtlamalar ve yüksek öncelikli FCM mesajlarına sınır getirir. Ayrıntılı bilgi için Güç yönetimi kısıtlamaları başlıklı makaleyi inceleyin.

Nadir

Sık kullanılmayan bir uygulama, nadir olarak kullanılan grupta yer alır. Örneğin, kullanıcının yalnızca otelde kaldığı süre boyunca çalıştırdığı bir otel uygulaması, nadir bulunan grupta yer alabilir.

Bir uygulama nadir pakette yer alıyorsa sistem, uygulamanın işleri ç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ı sayfasına bakın.

Hiçbir zaman

Yüklenmiş olan ancak hiç çalıştırılmayan uygulamalar hiçbir zaman paketine atanmaz. Sistem bu uygulamalara ciddi kısıtlamalar getirir.

Sistem, her bir uygulamayı dinamik olarak bir öncelikli pakete 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 yoksa sistem varsayılan olarak uygulamaları 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 uygulamanın daha fazla sistem kaynağı kullanabilmesi sağlanır. Paket, uygulama işlerinin ne sıklıkta çalışacağını, uygulamanın ne sıklıkta alarm tetikleyebileceğini ve uygulamanın yüksek öncelikli Firebase Cloud Messaging (FCM) mesajlarını ne sıklıkta alabileceğini belirler. Bu kısıtlamalar yalnızca cihaz pil gücüyle çalıştığı sürece geçerlidir. Sistem, cihaz şarj olurken uygulamalara bu kısıtlamaları uygulamaz.

Her üretici, etkin olmayan uygulamaların paketlere nasıl atanacağına ilişkin kendi ölçütlerini ayarlayabilir. Uygulamanızın hangi pakete atandığını etkilemeye çalışmamalısınız. Bunun yerine, uygulamanızın hangi pakette olursa olsun iyi davrandığından emin olmaya odaklanın. Uygulamanız, yeni yöntemi UsageStatsManager.getAppStandbyBucket() çağırarak hangi pakette olduğunu öğrenebilir.

En iyi uygulamalar

Uygulamanız zaten Doz ve uygulamayı beklemeye alma ile ilgili en iyi uygulamaları izliyorsa 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.

  • Sistemi, 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ı yazmayı seçebilir. Bunun yerine, hangi paket içinde olursa olsun uygulamanızın doğru şekilde davrandığından emin olun.
  • Başlatıcı etkinliği olmayan uygulamalar hiçbir zaman etkin pakete yükseltilmeyebilir. Bu tür bir etkinliği içerecek şekilde uygulamanızı yeniden tasarlayabilirsiniz.
  • 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 bildirim göstermezse kullanıcıya uygulamayla etkileşim kurma ve böylece etkin pakete yükseltme fırsatı vermez. Aslında, yüksek öncelikli FCM mesajları için amaçlanan tek kullanım, kullanıcıya bildirim aktarmaktır. Dolayısıyla, bu durum hiçbir zaman yaşanmamalıdır. Bir FCM mesajını, kullanıcı etkileşimini tetiklemediğinde uygunsuz 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 olabilir. Örneğin, bu durum başka olumsuz sonuçlara da neden olabilir.

    Not: Kullanıcı bir bildirimi tekrar tekrar kapatırsa sistem, kullanıcıya ileride bu bildirimi engelleme seçeneği sunar. Sadece 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 düzgün bir şekilde çalıştığından emin olmak için bu tür uygulamaları çeşitli paketlere atanan paketlerle test ettiğinizden emin olun.

Pil tasarrufu iyileştirmeleri

Android 9, pil tasarrufu modunda çeşitli iyileştirmeler yapar. 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 seviyelerine bakılmaksızın tüm uygulamalar için geçerlidir.
  • Ekran kapalıyken konum hizmetleri devre dışı olabilir.
  • Arka plan uygulamalarının ağ erişimi yoktur.

Ayrıca, cihaza özgü 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 etkinken 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, uygulamaların Android 9'u hedeflese de hedeflemese de Android 9 cihazlarda çalışan tüm uygulamaları etkiler. Uygulamanızın bu cihazlarda doğru şekilde çalışmasını sağlamak önemlidir.

Güç yönetimi özelliklerinin birbirleriyle nasıl etkileşim kurduğ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 yerleştirmek için ADB'yi kullanma hakkında bilgi edinmek için bkz. Doz ve Uygulamayı Beklemeye Alma ile test yapma.

Uygulamayı Beklemeye Alma Grupları

Uygulamanızı bir Uygulama Beklemeye Alma Paketi'ne 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 içinde bulunduğu pakete göz atmak için

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

Bir packagename parametresi iletmezseniz komut, tüm uygulamalar için paketleri listeler. Bir uygulama, yeni yöntemi UsageStatsManager.getAppStandbyBucket() çağırarak çalışma zamanında paketini de bulabilir.

Pil tasarrufu

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

Cihazın fişinin çekildiğini simüle etmek için şu komutu kullanın:

$ 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