Güç yönetimi

Android 9 (API düzeyi 28), cihaz güç yönetimini iyileştirmek için yeni özellikler sunar. Bu ve önceki sürümlerde bulunan özelliklerle birlikte, Böylece sistem kaynaklarının en çok ihtiyaç duyan uygulamalara verilmesini sağlayabilirsiniz.

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

Uygulama bekleme modu paketleri
Sistem uygulamaları sınırlandırır gibi cihaz kaynaklarına erişmelerini Kullanıcının kullanım alışkanlıklarına göre CPU veya pil. Bu, kullanıcıların Android 9.
Pil tasarrufu iyileştirmeleri
Pil tasarrufu açıldığında, sistem tüm uygulamalara kısıtlamalar getirir. Bu özellik, Android 9 ile iyileştirildi.
ziyaret edin.
'nı inceleyin.

Uygulamayı Beklemeye Alma Grupları

Android 9, Uygulama Bekletme Paketleri adlı yeni bir pil yönetimi özelliğini kullanıma sunuyor. Uygulama Bekletme Paketleri, sistemin uygulamaları öncelik sırasına koymasına yardımcı olur kaynak taleplerine uygulamaların ne kadar yakın zamanda ve ne sıklıkta kullanıldığına Uygulama kullanımına göre her uygulama beş öncelik grubundan birine yerleştirilir. Sistem uygulamanın kullandığı pakete bağlı olarak her uygulamanın kullanabileceği cihaz kaynaklarını sınırlar içinde.

Beş grup, uygulamaları aşağıdaki özelliklere göre gruplandırır:

Etkin

Kullanıcı o anda uygulamayı kullanıyorsa etkin pakette olan uygulamadır. örnek:

  • Uygulama bir etkinlik başlattı
  • Uygulama bir ön plan hizmeti çalıştırıyor
  • Uygulama, ön plan uygulaması
  • Kullanıcı, uygulamadan gelen bir bildirimi tıklar

Etkin pakette bir uygulama varsa sistem, veya FCM mesajları gösterilebilir.

Çalışma seti

Bir uygulama sık çalışıyorsa ancak şu anda çalışmıyorsa çalışma grubu paketindedir etkin. Örneğin, kullanıcının çoğu gün başlattığı bir sosyal medya uygulaması büyük ihtimalle çalışır durumda yer alır. Uygulamalar da çalışma setine yükseltilir anlamına gelir.

Bir uygulama çalışma setindeyse sistem, uygulamaya hafif kısıtlamalar geliştirme ve alarm tetikleme imkanı sunar. Ayrıntılar için bkz. Güç yönetimi kısıtlamaları.

Sık görüşülen

Bir uygulama, düzenli olarak kullanıldığı takdirde sıklıkla rastlananlar listesindedir, ancak bu her zaman geçerli değildir ulaşıyor. Örneğin, kullanıcının spor salonunda çalıştırdığı bir antrenman izleme uygulaması sık rastlananlar arasında olabilir.

Bir uygulama sık kullanılan pakette yer alıyorsa sistem, ilgili uygulamaya daha güçlü kısıtlamalar getirir. ve alarmları tetikleme yeteneğinin yanı sıra yüksek öncelikli FCM iletileridir. Ayrıntılar için bkz. Güç yönetimi kısıtlamaları.

Nadir

Sık kullanılmayan uygulamalar nadir olarak listelenir. Örneğin, bir otel uygulaması çok nadir rastlanan bir durum olabilir. paket.

Bir uygulama nadir bulunan paketteyse sistem işleri yürütme, alarmları tetikleme ve yüksek öncelikli FCM mesajları alma becerisine sahiptir. Sistem, uygulamanın internete bağlanma yeteneğini de sınırlandırır. Örneğin, Güç yönetimi kısıtlamaları bölümüne bakın.

Hiçbir zaman

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

Sistem, her uygulamayı dinamik olarak bir öncelik paketine atar ve uygulamadaki her uygulama için gerektiği şekilde devre dışı bırakabilirsiniz. Sistem, makine öğrenimi kullanan önceden yüklenmiş bir uygulamaya her birinin ne kadar olası olduğunu uygulamanızın kullanılacağını belirler ve uygulamaları uygun paketlere atar. Eğer uygulama cihazda yoksa sistem, uygulamaları varsayılan olarak en son kullanıldığı zaman. Şu özelliklere sahip paketlere daha fazla etkin uygulama atanır: uygulamalara daha yüksek öncelik verebilir, uygulamanın kullanabileceği daha fazla sistem kaynağıdır. Özellikle, paketin işlerin ne sıklıkta çalışacağını, uygulamanın ne sıklıkta ve uygulamanın yüksek öncelikli Firebase Cloud Mesajlaşma (FCM) mesajları. Bu kısıtlamalar yalnızca cihaz pil gücüyle çalışırken geçerlidir; sistem Bu kısıtlamaları, cihaz şarj olurken uygulamalara getirmez.

Her üretici, etkin olmayan uygulamaların nasıl olacağıyla ilgili kendi ölçütlerini belirleyebilir. atanır. Uygulamanızın hangi paketin kullanılacağını etkilemeye çalışmamalısınız. atanır. Bunun yerine uygulamanızın her durumda iyi davrandığından emin olmaya farklı olabilir. Uygulamanız, tarafından yüklenen ve yeni yöntemin çağrılması UsageStatsManager.getAppStandbyBucket().

En iyi uygulamalar

Uygulamanız halihazırda Doz ve uygulamayı bekleme modu, yeni güç yönetimi özelliklerinin işlenmesi zor olmayacaktır. Ancak, Önceden iyi sonuç veren bazı uygulama davranışları artık sorunlara neden olabiliyor.

  • Uygulamanızı tek bir pakete yerleştirmek için sistemi manipüle etmeye çalışmayın. başka bir tane. Sistemin paketleme yöntemleri değişebilir ve her cihaz üretici kendi paketleme uygulamasını yazmayı tercih edebilir. algoritmasından faydalanırsınız. Bunun yerine, hangi cihaz olursa olsun uygulamanızın gerektiği gibi içine sindireceğim.
  • Başlatıcı etkinliği olmayan uygulamalar hiçbir zaman etkinleştirebilirsiniz. Uygulamanızı, bu kadar yüksek bir etkinliği'ne dokunun.
  • Uygulamanın bildirimleri üzerinde işlem yapılamıyorsa kullanıcılar Bildirimler ile etkileşim kurarak etkin pakete tanıtabilirsiniz. İçinde bu durumda bazı uygun bildirimleri yeniden tasarlayarak kullanıcıdan yanıt gelmelidir. Bazı yönergeler için Materyal Tasarım Bildirim tasarımı hakkında daha fazla bilgi edinin.
  • Benzer bir şekilde, uygulama bir bildirim aldıktan sonra yüksek öncelikli FCM iletisiyle kullanıcıya uygulamayla etkileşim kurma ve böylece uygulamayı diğer kullanıcılara seçilebilir. Aslında yüksek öncelikli FCM mesajları için tasarlanmış tek kullanım kullanıcıya bir bildirim iletmelidir; böylece bu durumla hiçbir zaman karşılaşmazsınız. Şu durumda: bir FCM mesajını tetiklenmediğinde uygunsuz bir şekilde yüksek öncelikli olarak işaretle diğer olumsuz sonuçlara yol açabilir. bir projenin uygulamanızın kotasını tüketmesine neden olarak gerçekten acil bir durum FCM iletileri, normal öncelikli olarak ele alınır.

    Not: Kullanıcı bir bildirimi sürekli olarak kapatırsa sistem, kullanıcıya bu bildirimi engelleme seçeneği sunar. Sırf uygulamanızı şurada tutmak için kullanıcıya bildirim göndererek spam yapmayın: etkin paket

  • Uygulamalar birden fazla pakete bölünmüşse bu paketler farklı ve dolayısıyla farklı erişim düzeylerine sahiptir. Proje başlatma belgesinde bu tür uygulamaları çeşitli paketlere atanmış paketlerle test ederek nasıl davrandığını kontrol edin.

Pil tasarrufu iyileştirmeleri

Android 9, pil tasarrufu modunda çok sayıda iyileştirme yapar. Uygulanan kısıtlamaları cihaz üreticisi belirler. Örneğin, AOSP derlemelerinde, sistem aşağıdaki kısıtlamaları uygular:

  • Sistem, uygulamaları uygulamanın boşta kalması bekleniyor.
  • Arka planda yürütme sınırları, hedef API'sinden bağımsız olarak tüm uygulamalar için geçerlidir seviyesidir.
  • Ekran kapalıyken konum hizmetleri devre dışı bırakılabilir.
  • Arka plan uygulamalarının ağ erişimi yoktur.

Ayrıca, cihaza özgü başka güç optimizasyonları da vardır. Tam fiyat için güç yönetimini açıklayan sayfaya bakın kısıtlamalarına tabidir.

Her zaman olduğu gibi, uygulamanızı pil tasarrufu etkin durumdayken test etmeniz iyi bir fikirdir. Siz cihazın Ayarlar > Pilli Tasarruf ekranı'na dokunun.

Test ve sorun giderme

Yeni güç yönetimi özellikleri Android 9 cihazlarda çalışan tüm uygulamaları etkiler. Android 9'u hedeflemiyor. Uygulamanızın doğru tepkiler verdiğinden emin olmak düzgün şekilde kullanıyor.

Uygulamanızın temel kullanım alanlarını çeşitli koşullarda test ettiğinizden emin olun. ve güç yönetimi özelliklerinin birbiriyle nasıl etkileşime girdiğini gösterir. Android Hata Ayıklama Köprüsü komutlarının bir kısmını etkinleştirebilir veya devre dışı bırakabilirsiniz.

Android Debug Bridge komutları

Android Debug Bridge kabuk komutlarını kullanabilirsiniz test edebilirsiniz.

Cihazınızı Doz'a almak üzere ADB kullanma hakkında bilgi için bkz. Doz ve Uygulamayı Beklemeye Alma özellikleriyle test etme.

Uygulamayı Beklemeye Alma Grupları

Uygulamanızı manuel olarak bir Uygulama Bekleme Paketine 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

Tek seferde birden çok paket ayarlamak için bu komutu da 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 parametresini iletmezseniz komut, tüm uygulamalar için paketler. Ayrıca bir uygulama, yeni yöntem UsageStatsManager.getAppStandbyBucket().

Pil tasarrufu

Uygulamanızın düşük güç koşullarında nasıl davranacağını test etmek için kullanabileceğiniz birkaç komut vardır.

Cihazın fişten çekilmesinin simülasyonunu yapmak 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 manuel cihaz ayarlarınızı geri alabilirsiniz şu komutla kullanın:

$ adb shell dumpsys battery reset