Uygulamayı Beklemeye Alma Grupları

Android 9 (API düzeyi 28) ve sonraki sürümlerde uygulama bekleme grupları desteklenir. Uygulamayı Beklemeye Alma Grupları, uygulamaların kaynak isteklerine öncelik vermesi için sisteme yardımcı olur. Bu öncelik, uygulamaların ne kadar süre önce ve ne sıklıkta kullanıldığına göre belirlenir. Uygulama kullanım düzenlerine göre her uygulama beş öncelik paketinden birine yerleştirilir. Sistem, her uygulamaya sunulan cihaz kaynaklarını uygulamanın bulunduğu pakete göre sınırlar.

Öncelikli paketler

Sistem, her uygulamayı dinamik olarak bir öncelik grubuna atar ve gerektiğinde uygulamaları yeniden atar. Sistem, her uygulamanın kullanılma olasılığını belirlemek için makine öğrenimini kullanan önceden yüklenmiş bir uygulamaya güvenebilir ve uygulamaları uygun gruplara atayabilir.

Sistem uygulaması bir cihazda yoksa sistem, uygulamaları en son kullanım zamanlarına göre sıralar. Daha etkin olan uygulamalar, kendilerine daha yüksek öncelik veren gruplara atanır. Bu sayede uygulamaya daha fazla sistem kaynağı sunulur. Özellikle grup, uygulamanın işlerinin ne sıklıkta çalışacağını ve uygulamanın ne sıklıkta alarm 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 paketleri şunlardır:

  • Etkin: Uygulama kullanılıyor veya çok kısa süre önce kullanılmış.
  • Çalışma kümesi: Uygulama düzenli olarak kullanılıyor.
  • Sık: Uygulama sık sık kullanılır ancak günlük olarak kullanılmaz.
  • Nadir: Uygulama sık kullanılmıyor.
  • Kısıtlandı: Uygulama çok fazla sistem kaynağı tüketiyor veya istenmeyen davranışlar sergiliyor olabilir.

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

Aşağıdaki açıklamalar, tahmini olmayan durum için geçerlidir. Buna karşılık, tahmin davranışları tahmin etmek için makine öğrenimini kullandığında gruplar, son kullanıma göre değil, kullanıcının sonraki işlemlerini tahmin ederek seçilir. Örneğin, makine öğrenimi, uygulamanın birkaç saat boyunca kullanılmayabileceğini tahmin ettiğinden, yakın zamanda kullanılan bir uygulama nadir kullanılan uygulamalar grubuna girebilir.

Etkin

Bir uygulama kullanılırken, çok kısa süre önce kullanılmışken veya aşağıdakilerden herhangi birini yaparken etkin grupta yer alır:

  • Bir etkinliği başlatır.
  • Uzun süren bir ön plan hizmeti çalıştırır.
  • Kullanıcı tarafından bir bildirimden dokunulduğunda

Bir uygulama etkin grupta yer alıyorsa sistem, uygulamanın işleri veya alarmları üzerinde minimum kısıtlamalar uygular:

  • Android 16'dan (API düzeyi 36) itibaren, etkin paketteki bir uygulama tarafından başlatılan arka plan işleri için cömert bir çalışma zamanı kotası uygulanır. Bu, doğrudan JobScheduler ile planlanan işlerin yanı sıra WorkManager veya DownloadManager gibi diğer kitaplıklar tarafından oluşturulan işleri de içerir.

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 bıraktıktan sonra sistem, uygulamayı kullanım geçmişine göre bir pakete yerleştirir.

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

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

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

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

Çalışma kümesi

Bir uygulama sık sık çalışıyorsa ancak etkin değilse çalışma kümesi grubundadır. Örneğin, kullanıcının neredeyse her gün başlattığı bir sosyal medya uygulamasının çalışma kümesinde olması muhtemeldir. Uygulamalar dolaylı olarak kullanılıyorsa da çalışma kümesi paketine yükseltilir.

Bir uygulama çalışma kümesindeyse sistem, uygulamanın iş çalıştırma ve alarm tetikleme yeteneğine hafif kısıtlamalar uygular. Ayrıntılı bilgi için Güç yönetimi kaynak sınırları başlıklı makaleye bakın.

Sık görüşülen

Bir uygulama düzenli olarak kullanılıyorsa ancak her gün kullanılması gerekmiyorsa sık kullanılan uygulamalar grubunda yer alır. Örneğin, kullanıcının spor salonunda çalıştırdığı bir antrenman takip uygulaması sık kullanılanlar paketinde olabilir.

Bir uygulama sık kullanılanlar grubundaysa sistem, işleri çalıştırma ve alarm tetikleme özelliğiyle ilgili daha katı kısıtlamalar uygular. Ayrıntılı bilgi için Güç yönetimi kaynak sınırları başlıklı makaleye bakın.

Nadir

Bir uygulama sık kullanılmıyorsa nadir grubundadır. Örneğin, kullanıcının yalnızca söz konusu otelde kaldığı süre boyunca çalıştırdığı bir otel uygulaması nadir kullanılan uygulamalar grubunda yer alabilir.

Bir uygulama nadir kullanılan uygulamalar grubundaysa sistem, bu uygulamanın işleri çalıştırma ve alarm tetikleme özelliğiyle ilgili katı kısıtlamalar uygular. Sistem, uygulamanın internete bağlanma özelliğini de sınırlar. Ayrıntılı bilgi için Güç yönetimi kaynak sınırları başlıklı makaleye bakın.

Kısıtlanmış

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

Android 13 (API düzeyi 33) ve sonraki sürümlerde, uygulamanız muafiyet için uygun değilse sistem, aşağıdaki durumlarda uygulamanızı kısıtlanmış pakete yerleştirir:

  • Kullanıcı, belirli sayıda gün boyunca uygulamanızla etkileşimde bulunmaz. Android 12 (API düzeyi 31) ve 12L'de (API düzeyi 32) bu süre 45 gündür. Android 13'te bu süre 8 güne düşürülmüştür.

  • Uygulamanız 24 saatlik bir süre içinde aşırı sayıda yayın veya bağlama işlemi ç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ş çalıştırabilirsiniz. Bu oturum sırasında sistem, 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 bekleyen en az bir iş olmalıdır. Bu işler, diğer işleri de içerebilir.
  • Sistem, uygulamanızı daha az kısıtlayıcı bir pakete yerleştirdiğinde uygulamanızın çalıştırabileceği hızlandırılmış iş sayısı daha az olabilir.
  • Uygulamanız günde bir alarm başlatabilir. Bu alarm, tam veya yaklaşık alarm olabilir.

Kısıtlanmış paketten muafiyetler

Aşağıdaki uygulama türleri, kısıtlanmış pakete girmekten muaftır ve Android 12 ile sonraki sürümlerde bile etkinliksizlik 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

Sistem, uygulamanız STANDBY_BUCKET_ACTIVE (10) değerinden büyük bir Uygulama Bekletme Paketi'ne yerleştirildiğinde uygulamanızın sıklığını azaltır.

En iyi uygulamalar

Uygulamanız Doz ve uygulama beklemede kalma ile ilgili en iyi uygulamaları takip ediyorsa sonraki güç yönetimi özellikleri zor değildir. Ancak daha önce sorunsuz çalışan bazı uygulama davranışları sorunlara neden olabilir.

  • Sistemi, uygulamanızı belirli bir pakete yerleştirmesi için manipüle etmeye çalışmayın. Sistemin öncelik verme yöntemi değişebilir ve her cihaz üreticisi kendi algoritmasına sahip kendi gruplandırma uygulamasını yazmayı tercih edebilir. Bunun yerine, uygulamanızın hangi pakette olursa olsun uygun şekilde davrandığından emin olun.
  • Başlatıcı etkinliği olmayan uygulamalar hiçbir zaman etkin pakete yükseltilmeyebilir. Uygulamanızı bu tür bir etkinliğe sahip olacak şekilde yeniden tasarlamayı düşünebilirsiniz.
  • Kullanıcılar uygulama bildirimleriyle etkileşimde bulunamıyorsa uygulamanın etkin pakete yükseltilmesini tetikleyemez. Bu durumda, kullanıcıların etkileşimde bulunmasına olanak tanıyan bazı bildirimleri yeniden tasarlamayı düşünebilirsiniz. Bazı yönergeler için Materyal Tasarım Bildirim tasarım kalıpları konusuna bakın.

  • Uygulama, yüksek öncelikli Firebase Cloud Messaging (FCM) iletisi aldığında bildirim göstermezse kullanıcı uygulamayla etkileşime geçemez ve bu nedenle uygulamayı etkin pakete yükseltemez. Aslında, yüksek öncelikli FCM mesajlarının tek kullanım amacı kullanıcıya bildirim göndermektir. Bu nedenle, bu durumun oluşmaması gerekir. 12L (API düzeyi 32) ve daha düşük sürümlerde, kullanıcı etkileşimini tetiklemeyen bir FCM mesajını uygunsuz bir şekilde yüksek öncelikli olarak işaretlerseniz gelecekteki mesajların önceliği düşürülebilir.

  • Uygulamalar birden fazla pakete bölünmüşse bu paketler farklı gruplarda olabilir ve farklı erişim düzeylerine sahip olabilir. Uygulamanın düzgün çalıştığından emin olmak için bu uygulamaları çeşitli gruplara atanmış paketlerle test edin.