Android 9 (API düzeyi 28) ve sonraki sürümler uygulama bekleme kapları özelliğini destekler. Uygulamayı Beklemeye Alma Paketleri, sistemin uygulamaların kaynak isteklerine öncelik vermesine yardımcı olur. Öncelik, uygulamaların ne kadar süre önce ve ne sıklıkta kullanıldığına göre belirlenir. Uygulamaların kullanım kalıplarına göre her uygulama, beş öncelikli gruptan birine yerleştirilir. Sistem, uygulamanın bulunduğu pakete bağlı olarak her uygulamanın kullanabileceği cihaz kaynaklarını sınırlar.
Öncelikli paketler
Sistem, her uygulamayı dinamik olarak bir öncelik paketine atayarak uygulamaları gerektiği şekilde yeniden atar. Sistem, her uygulamanın kullanılma olasılığını belirlemek için makine öğrenimini kullanan önceden yüklenmiş bir uygulamadan yararlanabilir ve uygulamaları uygun gruplara atar.
Sistem uygulaması cihazda yoksa sistem varsayılan olarak uygulamaları en son kullanım tarihlerine göre sıralar. Daha aktif olan uygulamalar, kendilerine daha yüksek öncelik veren gruplara atanır. Bu sayede uygulama daha fazla sistem kaynağına erişebilir. Özellikle grup, 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 paketleri şunlardır:
- Etkin: Uygulama kullanılıyor veya çok yakın zamanda kullanıldı.
- Ç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ıtlandı: Uygulama çok fazla sistem kaynağı tüketiyor veya istenmeyen davranışlar sergileyebilir.
Bu öncelikli gruplara ek olarak, yüklenmiş ancak hiç çalıştırılmamış uygulamalar için özel bir hiç grubu vardır. Sistem bu uygulamalara ciddi kısıtlamalar uygular.
Aşağıdaki açıklamalar, tahmini olmayan durum içindir. Buna karşılık, davranışı tahmin etmek için makine öğrenimi kullanıldığı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ılmayacağını tahmin ettiğinden, yakın zamanda kullanılan bir uygulama nadir grubuna dahil edilebilir.
Etkin
Bir uygulama, kullanılırken, çok yakın zamanda kullanılırken veya aşağıdakilerden herhangi birini yaparken etkin grubuna girer:
- Bir etkinliği başlatır.
- Uzun süredir çalışan bir ön plan hizmeti çalıştırır.
- Kullanıcı bir bildirimde dokundu.
Bir uygulama etkin gruptaysa sistem, uygulamanın işleri veya alarmları üzerinde herhangi bir kısıtlama uygulamaz.
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şime geçtiğinde sistem uygulamanızı geçici olarak etkin grupta yer alacak şekilde yerleştirir. Kullanıcı uygulamanızla etkileşimi bıraktıktan sonra sistem, kullanıcıyı kullanım geçmişine göre bir grupta yer alır.
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şim kurar.
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
Sık çalıştırılan ancak etkin olmayan uygulamalar çalışma grubu klasöründe yer alır. Örneğin, kullanıcının neredeyse her gün başlattığı bir sosyal medya uygulamasının çalışma grubunda olması muhtemeldir. Uygulamalar, dolaylı olarak kullanılıyorsa çalışma grubu grubuna da yükseltilir.
Bir uygulama çalışma grubundaysa sistem, uygulamanın iş çalıştırma ve alarm tetikleme özelliğine hafif kısıtlamalar uygular. Ayrıntılar için Güç yönetimi kısıtlamaları bölümüne bakın.
Sık görüşülen
Düzenli olarak (her gün olmasa da) kullanılan uygulamalar sık olarak sınıflandırılır. Örneğin, kullanıcının spor salonunda kullandığı bir egzersiz takibi uygulaması sık kullanılanlar paketinde yer alabilir.
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ılı bilgi için Güç yönetimi kısıtlamaları başlıklı makaleyi inceleyin.
Nadir
Sık kullanılmayan uygulamalar nadir olarak sınıflandırılır. Örneğin, kullanıcının yalnızca o otelde kalırken çalıştırdığı bir otel uygulaması, nadir grupta yer alabilir.
Bir uygulama nadir gruptaysa sistem, uygulamanın iş çalıştırma ve alarm tetikleme özelliğine katı kısıtlamalar uygular. Sistem, uygulamanın internete bağlanma kabiliyetini de sınırlandırır. Ayrıntılı bilgi için Güç yönetimi kısıtlamaları başlıklı makaleyi inceleyin.
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 istisna kapsamına girmediği sürece sistem aşağıdaki durumlarda uygulamanızı kısıtlanmış grubuna yerleştirir:
Kullanıcı, uygulamanızla belirli sayıda gün boyunca etkileşim kurmuyor. Android 12 (API düzeyi 31) ve 12L (API düzeyi 32) sürümlerinde bu süre 45 gündür. Android 13, gün sayısını 8'e düşürür.
Uygulamanız 24 saat içinde aşırı sayıda yayın veya bağlama yapıyor.
Sistem, uygulamanızı kısıtlanmış grubuna yerleştirirse aşağıdaki kısıtlamalar geçerli olur:
- 10 dakikalık toplu oturumda günde bir kez işler ç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 başka iş olmalıdır. Bu iş, herhangi bir iş olabilir.
- Sistem, uygulamanızı daha az kısıtlayıcı bir pakete yerleştirdiğinde uygulamanız daha az sayıda hızlandırılmış iş çalıştırabilir.
- Uygulamanız günde bir alarm çağırabilir. Bu alarm tam alarm veya yaklaşık alarm olabilir.
Kısıtlanmış paketteki muafiyetler
Aşağıdaki uygulama türleri, Android 12 ve sonraki sürümlerde bile kısıtlanmış gruba girmekten muaftır ve etkin olmama tetikleyicisini atlar:
- Tamamlayıcı cihaz uygulamaları
- Demo modunda çalışan uygulamalar
- Cihaz sahibi uygulamaları
- Profil sahibi uygulamaları
- Kalıcı uygulamalar
- VPN uygulamaları
ROLE_DIALER
rolüne sahip uygulamalar- Kullanıcının sistem ayarlarında "kısıtlanmamış" işlevler sunması için açıkça belirttiği uygulamalar
- Etkin widget'lara sahip uygulamalar
- Aşağıdaki izinlerden en az birine sahip olan uygulamalar:
Öncelikli paketi değerlendirme
Uygulamanızın hangi pakete atandığını kontrol etmek için aşağıdakilerden birini yapın:
getAppStandbyBucket()
numaralı telefonu arayın.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 çalışan bazı uygulama davranışları soruna neden olabilir.
- Sistemi, uygulamanızı belirli bir pakete yerleştirecek şekilde değiştirmeye çalışmayın. Sistemin öncelik verme yöntemi değişebilir ve her cihaz üreticisi kendi algoritmasıyla kendi gruplandırma uygulamasını yazmayı seçebilir. Bunun yerine, uygulamanızın hangi pakette olduğuna bakılmaksızın uygun davrandığından emin olun.
- Bir uygulamanın 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 tasarlayabilirsiniz.
Kullanıcılar uygulama bildirimleriyle etkileşim kuramıyorsa uygulamanın etkin pakete tanıtımını 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östermiyorsa 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 amacı kullanıcıya bildirim göndermektir. Bu nedenle, bu durum yaşanmamalı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 öncelik düzeyinin 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 düzgün şekilde davrandığından emin olmak için bu uygulamaları çeşitli paketlere atanmış paketlerle test edin.