Uygulamayı Beklemeye Alma Grupları

Android 9 (API düzeyi 28) ve sonraki sürümler Uygulama Bekleme Paketlerini destekler. Uygulamayı Beklemeye Alma Paketleri, sistemin ne kadar yakın zamanda ve ne sıklıkta kullanıldığına bağlı olarak uygulamaların kaynak isteklerine öncelik vermesine yardımcı olur. Uygulama kullanım alışkanlıklarına göre her uygulama, beş öncelikli paketten birine yerleştirilir. Sistem, uygulamanın bulunduğu pakete bağlı olarak her uygulamanın kullanabileceği cihaz kaynaklarını sınırlar.

Öncelik paketleri

Sistem, her uygulamayı dinamik olarak bir öncelik paketine atayarak uygulamaları gerektiği şekilde 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.

Cihazda sistem uygulaması yoksa sistem, uygulamaları varsayılan olarak en son ne kadar zaman önce kullanıldıklarına göre sıralar. Daha aktif olan uygulamalar, kendilerine daha yüksek öncelik veren paketlere atanır ve böylece uygulamaya daha fazla sistem kaynağı sunulur. Özellikle, paket, uygulamanın işlerinin ne sıklıkta çalışacağını ve uygulamanın alarmları ne sıklıkta tetikleyebileceğini belirler. Bu kısıtlamalar yalnızca cihaz pil gücüyle çalışırken geçerlidir. Cihaz şarj olurken, sistem bu kısıtlamaları uygulamaz.

Öncelik grupları şunlardır:

  • Etkin: Uygulama şu anda veya kısa süre önce kullanılmıştır.
  • Çalışma grubu: Uygulama normal olarak kullanılıyordur.
  • Sık: Uygulama genellikle kullanılır ancak her gün kullanılmaz.
  • Nadir: Uygulama, sık kullanılmaz.
  • Kısıtlanmış: Uygulama çok fazla sistem kaynağı tüketiyor veya istenmeyen davranış sergileyebilir.

Bu öncelikli paketlere ek olarak, yüklenmiş ancak hiçbir zaman çalıştırılmamış uygulamalar için özel bir hiçbir zaman paketi vardır. Sistem bu tür uygulamalara ciddi kısıtlamalar getirir.

Aşağıdaki açıklamalar, tahmine dayalı olmayan destek kaydı içindir. Buna karşılık, tahmin davranışı tahmin etmek için makine öğrenimini kullandığında paketler, son kullanım yerine kullanıcının bir sonraki işlemleri dikkate alınarak seçilir. Örneğin, makine öğrenimi uygulamanın birkaç saat kullanılamayacağını tahmin ettiği için son kullanılan bir uygulama nadir bulunan bir uygulama grubuna eklenebilir.

Etkin

Bir uygulama kullanılırken, çok kısa süre önce kullanıldığında veya aşağıdakilerden herhangi birini yaparken etkin pakette bulunur:

  • Bir etkinlik başlatır.
  • Uzun süre çalışan bir ön plan hizmetini çalıştırır.
  • Kullanıcı bir bildirimden dokunduğunda.

Bir uygulama etkin pakette yer alıyorsa sistem, uygulamanın işleri veya alarmları için herhangi bir kısıtlama yapmaz.

Kullanıcı etkileşimi uygulamaları etkin olarak atar

Android 9 (API düzeyi 28) ve sonraki sürümlerde kullanıcı, uygulamanızla belirli şekillerde etkileşimde bulunduğunda sistem, uygulamanızı geçici olarak etkin pakete yerleştirir. Kullanıcı, uygulamanızla etkileşimi durdurduktan sonra sistem, uygulamanızı kullanım geçmişine göre bir pakete yerleştirir.

Aşağıda, bu sistem davranışını tetikleyen etkileşim örnekleri verilmiştir:

  • Kullanıcı, uygulamanızın gönderdiği bir bildirime dokunur.

  • Kullanıcı, bir medya düğmesine dokunarak uygulamanızdaki bir ön plan hizmetiyle etkileşimde bulunur.

  • Kullanıcı, uygulamanızın bir ön plan hizmeti veya CONNECTION_TYPE_PROJECTION kullandığı Android Automotive OS ile etkileşimde bulunurken uygulamanıza bağlanır.

Çalışma seti

Bir uygulama sık sık çalışıyorsa ancak etkin değilse çalışma grubu paketindedir. Örneğin, kullanıcının neredeyse her gün kullanıma sunduğu bir sosyal medya uygulaması büyük olasılıkla çalışma grubunda yer alır. Dolaylı olarak kullanılan uygulamalar da çalışma grubu paketine yükseltilir.

Bir uygulama çalışma setindeyse sistem, işleri çalıştırma ve alarmları tetikleme becerisine hafif kısıtlamalar getirir. Ayrıntılar için Güç yönetimi kısıtlamaları bölümüne bakın.

Sık sık

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

Bir uygulama sık kullanılan pakete dahil edilirse sistem, iş çalıştırma ve alarm tetikleme becerisine daha güçlü kısıtlamalar getirir. Ayrıntılar için Güç yönetimi kısıtlamaları bölümüne bakın.

Nadir

Bir uygulama, sık kullanılmıyorsa nadir kategorisindedir. Örneğin, kullanıcının yalnızca ilgili otelde kaldığı süre boyunca çalıştırdığı bir otel uygulaması, nadir paket olarak değerlendirilebilir.

Bir uygulama nadir bulunan pakette yer alıyorsa sistem, iş çalıştırma ve alarm tetikleme özelliğine yönelik katı kısıtlamalar uygular. Sistem, uygulamanın internete bağlanma kabiliyetini de sınırlandırır. Ayrıntılar için Güç yönetimi kısıtlamaları bölümüne bakın.

Kısıtlanmış

Android 12'de (API düzeyi 31) eklenen bu paket, tüm paketler arasında en düşük önceliğe ve en yüksek kısıtlamalara sahiptir. Sistem, uygulamanızı kısıtlanmış pakete yerleştirip yerleştirmeyeceğini belirlemek için uygulamanızın davranışını (ör. kullanıcının uygulamayla ne sıklıkta etkileşimde bulunduğu) dikkate alır.

Android 13 (API düzeyi 33) ve sonraki sürümlerde uygulamanız muafiyete uygun olmadığı sürece sistem, aşağıdaki durumlarda uygulamanızı kısıtlanmış pakete yerleştirir:

  • Kullanıcı belirli sayıda gün boyunca uygulamanızla etkileşime geçmediyse. Android 12 (API düzeyi 31) ve 12L'de (API düzeyi 32) gün sayısı 45'tir. Android 13, gün sayısını 8'e düşürür.

  • Uygulamanız, 24 saatlik bir süre içinde çok fazla yayın veya bağlama çağırıyor.

Sistem, uygulamanızı kısıtlanmış pakete yerleştirirse aşağıdaki kısıtlamalar geçerli olur:

  • 10 dakikalık toplu oturumda günde bir kez işleri çalıştırabilirsiniz. Sistem, bu oturum sırasında uygulamanızın işlerini diğer uygulamaların işleriyle gruplandırır.
    • Kısıtlanmış işler kendi başlarına çalışmaz. Aynı anda çalışan veya beklemede olan en az bir iş daha olmalıdır (başka herhangi bir iş olabilir).
  • Uygulamanız, sistemin uygulamanızı daha az kısıtlayıcı bir pakete yerleştirdiği durumlara kıyasla daha az hızlandırılmış iş çalıştırabilir.
  • Uygulamanız günde bir tane alarm çağırabilir. Bu alarm tam alarm veya tam olmayan alarm olabilir.

Kısıtlanmış paketteki muafiyetler

Aşağıdaki uygulama türleri, Android 12 ve sonraki sürümlerde bile kısıtlanmış pakete girmekten muaftır ve etkin olmama tetikleyicisini atlar:

Öncelik grubunu değerlendirme

Uygulamanızın hangi pakete atandığını kontrol etmek için aşağıdakilerden birini yapın:

  • getAppStandbyBucket() numaralı telefonu arayın.

  • Bir terminal penceresinde aşağıdaki komutu çalıştırın:

    adb shell am get-standby-bucket PACKAGE_NAME

Uygulamanız, değeri STANDBY_BUCKET_ACTIVE (10) üzerinde olan bir Uygulama Bekleme Paketine yerleştirildiğinde sistem, uygulamanızı kısıtlar.

En iyi uygulamalar

Uygulamanız Doz ve uygulamayı bekleme modu için en iyi uygulamaları takip ediyorsa sonraki güç yönetimi özellikleri zor değildir. Ancak daha önce iyi sonuç veren bazı uygulama davranışları sorunlara neden olabilir.

  • Sistemi, uygulamanızı belirli bir pakete koyması için değiştirmeye çalışmayın. Sistemin öncelik verme yöntemi değişebilir ve her cihaz üreticisi kendi algoritmasıyla kendi paketleme uygulamasını yazmayı tercih edebilir. Bunun yerine, uygulamanızın bulunduğu paketten bağımsız olarak düzgün davrandığından emin olun.
  • Başlatıcı etkinliği olmayan uygulamalar hiçbir zaman etkin pakete yükseltilemez. Uygulamanızı bu tür bir etkinlik içerecek şekilde yeniden tasarlamayı düşünebilirsiniz.
  • Uygulama bildirimleriyle etkileşimde bulunamayan kullanıcılar, uygulamanın etkin pakete yükseltilmesini tetikleyemez. Bu durumda, kullanıcıların etkileşimde bulunmasını sağlayan bazı bildirimleri yeniden tasarlayabilirsiniz. Bazı yönergeler için Materyal Tasarım Bildirim tasarım kalıplarına bakın.

  • Uygulama, yüksek öncelikli bir Firebase Cloud Messaging (FCM) mesajı aldığında bildirim göstermezse kullanıcı uygulamayla etkileşimde bulunamaz ve bu nedenle etkin pakete yükseltemez. Aslında yüksek öncelikli FCM mesajları için amaçlanan tek kullanım, kullanıcıya bir bildirim göndermektir. Bu nedenle, bu durumla karşılaşılmamalıdır. 12L (API düzeyi 32) ve daha düşük sürümlerde, kullanıcı etkileşimini tetiklemediği bir FCM mesajını uygunsuz bir şekilde yüksek öncelikli olarak işaretlerseniz gelecekteki mesajların önceliğinin düşürülmesine neden olabilir.

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