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, her uygulamanın kullanabileceği 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 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.
Öncelikli paketler şunlardır:
- Etkin: Uygulama kullanılıyor veya çok yakın zamanda kullanıldı.
- Çalışma grubu: Uygulama düzenli olarak kullanılıyor.
- Sık: Uygulama 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 sergileyebilir.
Bu öncelik gruplarına 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ı, Android Automotive OS ile etkileşimde bulunurken uygulamanıza bağlanır. Bu durumda uygulamanız bir ön plan hizmeti veya
CONNECTION_TYPE_PROJECTION
kullanı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ılı bilgi için Güç yönetimi kısıtlamaları başlıklı makaleyi inceleyin.
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ılanlar grubundaysa sistem, uygulamanın iş çalıştırma ve alarm tetikleme özelliğine daha sıkı kısıtlamalar uygular. 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 konakladığı sırada ç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 özelliğini de sınırlar. 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ın kısıtlanmış grubuna yerleştirilip yerleştirilmeyeceğine karar vermek için uygulamanızın davranışını (ör. kullanıcının uygulamayla ne sıklıkta etkileşime geçtiği) 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ı belirli sayıda gün boyunca uygulamanızla 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 kendine ç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ış paketten muaf tutulanlar
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:
- Yardımcı 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
Sistem, değeri STANDBY_BUCKET_ACTIVE
(10) olan bir uygulama bekleme grubuna yerleştirildiğinde uygulamanızı kısıtlar.
En iyi uygulamalar
Uygulamanız Doz ve uygulamayı beklemeye alma ile ilgili en iyi uygulamaları izliyorsa 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 gruba 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 grupta olursa olsun uygun şekilde 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ına olanak tanıyan 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 önceki sürümlerde, kullanıcı etkileşimi tetiklemediği halde bir FCM mesajını uygunsuz bir şekilde yüksek öncelikli olarak işaretlerseniz gelecekteki mesajların önceliğinin kaldırılmasına neden olabilirsiniz.
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 şekilde davrandığından emin olmak için bu uygulamaları çeşitli paketlere atanmış paketlerle test edin.