Android 9 (API düzeyi 28) ve sonraki sürümler Uygulamayı Beklemeye Alma Grupları'nı destekler. Uygulamayı Beklemeye Alma Grupları, sistemin uygulamaların kaynak isteklerini ne kadar yakın zamanda ve ne sıklıkta kullanıldıklarına göre önceliklendirmesine yardımcı olur. Uygulama kullanım kalıplarına göre her uygulama beş öncelik grubundan birine yerleştirilir. Sistem, uygulamanın bulunduğu gruba göre her uygulamanın kullanabileceği cihaz kaynaklarını sınırlandırır.
Öncelik grupları
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 atayabilir.
Sistem uygulaması cihazda yoksa sistem, uygulamaları varsayılan olarak en son kullanılma zamanına göre sıralar. Daha etkin olan uygulamalar, daha yüksek öncelik veren gruplara atanır. Böylece, uygulama daha fazla sistem kaynağı kullanabilir. Özellikle, uygulamanın işlerinin ne sıklıkta çalıştırılacağını ve uygulamanın ne sıklıkta alarm tetikleyebileceğini grup 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 kullanılıyor veya çok yakın zamanda kullanıldı.
- Çalışma grubu: Uygulama düzenli olarak kullanılıyordur.
- Sık kullanılan: Uygulama sık sık kullanılır ancak her gün kullanılmaz.
- Nadir: Uygulama sık kullanılmıyor.
- Kısıtlı: Uygulama çok fazla sistem kaynağı tüketiyor veya istenmeyen davranışlar sergiliyor olabilir.
Bu öncelik gruplarına ek olarak, yüklenen ancak hiç çalıştırılmayan uygulamalar için özel bir hiçbir zaman grubu vardır. Sistem, bu uygulamalara ciddi kısıtlamalar uygular.
Aşağıdaki açıklamalar, tahmine dayalı olmayan durumlar için geçerlidir. Buna karşılık, tahmin, davranışı tahmin etmek için makine öğrenimini kullandığında, gruplar son kullanıma göre değil, kullanıcının bir sonraki eylemlerinin tahminine göre seçilir. Örneğin, makine öğrenimi uygulamanın birkaç saat boyunca kullanılmayacağını tahmin ettiği için yakın zamanda kullanılan bir uygulama nadir grubuna girebilir.
Etkin
Bir uygulama, kullanıldığı sırada, çok yakın zamanda kullanıldığında veya aşağıdakilerden herhangi birini yaptığında etkin grubunda yer alır:
- Bir etkinlik başlatır.
- Uzun süreli bir ön plan hizmeti çalıştırır.
- Kullanıcı tarafından bir bildirimden dokunulduğunda
Bir uygulama etkin grubundaysa sistem, uygulamanın işlerine veya alarmlarına minimum kısıtlama uygular:
- Android 16'dan (API düzeyi 36) itibaren, etkin gruptaki bir uygulama tarafından başlatılan arka plan görevleri için geniş bir çalışma zamanı kotası vardır.
Doğrudan
JobSchedulerile planlanan işlerin yanı sıra WorkManager veyaDownloadManagergibi diğer kitaplıklar tarafından oluşturulan işler de buna dahildir.
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 grubuna yerleştirir. Kullanıcı uygulamanızla etkileşimde bulunmayı bıraktıktan sonra sistem, kullanım geçmişine göre uygulamayı bir gruba 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ı, Android Automotive OS ile etkileşimde bulunurken uygulamanıza bağlanır. Uygulamanız, ön plan hizmeti veya
CONNECTION_TYPE_PROJECTIONkullanır.
Çalışma kümesi
Sık sık çalışan ancak etkin olmayan uygulamalar çalışma grubu grubundadır. Örneğin, kullanıcının neredeyse her gün başlattığı bir sosyal medya uygulaması muhtemelen çalışma grubunda yer alır. Uygulamalar dolaylı olarak kullanıldığında da çalışma grubu grubuna yükseltilir.
Bir uygulama çalışma grubundaysa sistem, uygulamanın işleri çalıştırma ve alarmları tetikleme özelliğine hafif kısıtlamalar uygular. Ayrıntılı bilgi için Güç yönetimi kaynak sınırları başlıklı makaleyi inceleyin.
Sık görüşülenler
Bir uygulama düzenli olarak kullanılıyorsa ancak her gün kullanılması gerekmiyorsa sık grubundadır. Örneğin, kullanıcının spor salonunda çalıştırdığı bir antrenman takip uygulaması sık kullanılanlar grubunda olabilir.
Bir uygulama sık kullanılanlar grubundaysa sistem, uygulamanın işleri çalıştırma ve alarmları tetikleme yeteneğine daha güçlü kısıtlamalar uygular. Ayrıntılı bilgi için Güç yönetimi kaynak sınırları başlıklı makaleyi inceleyin.
Nadir
Sık kullanılmayan uygulamalar nadiren grubuna girer. Örneğin, kullanıcının yalnızca belirli bir otelde kalırken çalıştırdığı otel uygulaması, nadir kullanılanlar grubunda olabilir.
Bir uygulama nadir kullanılanlar grubundaysa sistem, uygulamanın işleri çalıştırma ve alarmları tetikleme yeteneğine katı kısıtlamalar uygular. Sistem, uygulamanın internete bağlanma becerisini de sınırlandırır. Ayrıntılı bilgi için Güç yönetimi kaynak sınırları başlıklı makaleyi inceleyin.
Kısıtlanmış
Android 12'de (API düzeyi 31) eklenen bu grup, tüm gruplar arasında en düşük önceliğe ve en yüksek kısıtlamalara sahiptir. Sistem, uygulamanızı kısıtlı gruba yerleştirip yerleştirmeyeceğine karar vermek için uygulamanızın davranışını (ör. kullanıcının uygulamayla ne sıklıkta etkileşimde bulunduğunu) dikkate alır.
Android 13 (API düzeyi 33) ve sonraki sürümlerde, uygulamanız muafiyet için uygun olmadığı sürece sistem, uygulamanızı aşağıdaki durumlarda kısıtlanmış gruba yerleştirir:
Kullanıcı, belirli bir gün sayısı boyunca uygulamanızla etkileşimde bulunmaz. Android 12 (API düzeyi 31) ve 12L (API düzeyi 32) sürümlerinde gün sayısı 45'tir. 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 çağırıyor.
Sistem, uygulamanızı kısıtlanmış gruba yerleştirirse aşağıdaki kısıtlamalar geçerli olur:
- İşleri günde bir kez, 10 dakikalık toplu oturumda ç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 beklemede olan en az bir başka iş olmalıdır. Bu iş, başka herhangi bir iş olabilir.
- Uygulamanız, sistemin uygulamanızı daha az kısıtlayıcı bir gruba yerleştirdiği duruma kıyasla daha az yüksek öncelikli iş çalıştırabilir.
- Uygulamanız günde bir alarm çağırabilir. Bu alarm, kesin zamanlı alarm veya kesin zamanlı olmayan alarm olabilir.
Kısıtlanmış gruptan muafiyetler
Aşağıdaki uygulama türleri, Android 12 ve sonraki sürümlerde bile kısıtlanmış gruba girmez ve etkinlik olmaması tetikleyicisini atlar:
- Yardımcı cihaz uygulamaları
- Demo modunda bir cihazda çalışan uygulamalar
- Cihaz sahibi uygulamaları
- Profil sahibi uygulamaları
- Kalıcı uygulamalar
- VPN uygulamaları
ROLE_DIALERrolüne sahip uygulamalar- Kullanıcının sistem ayarlarında "kısıtlanmamış" işlevler sunmak üzere açıkça belirlediği uygulamalar
- Etkin widget'ları olan uygulamalar
- Aşağıdaki izinlerden en az birinin verildiği uygulamalar:
Öncelik grubunu değerlendirme
Uygulamanızın hangi gruba 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) değerinden büyük olan bir Uygulamayı Beklemeye Alma Grubu'na yerleştirildiğinde uygulamanızı kısıtlar.
En iyi uygulamalar
Uygulamanız Doze ve Uygulamayı Beklemeye Alma ile ilgili en iyi uygulamaları takip ediyorsa sonraki güç yönetimi özelliklerini uygulamak zor değildir. Ancak daha önce iyi çalışan bazı uygulama davranışları sorunlara neden olabilir.
- Sistemi, uygulamanızı belirli bir gruba yerleştirmesi için manipüle etmeye çalışmayın. Sistemin öncelik belirleme yöntemi değişebilir ve her cihaz üreticisi kendi algoritmasına sahip kendi gruplandırma uygulamasını yazmayı seçebilir. Bunun yerine, uygulamanızın hangi grupta olursa olsun uygun şekilde davrandığından emin olun.
- Başlatıcı etkinliği olmayan uygulamalar hiçbir zaman etkin gruba yükseltilmeyebilir. Uygulamanızı bu tür bir etkinlik içerecek şekilde yeniden tasarlayabilirsiniz.
Kullanıcılar uygulama bildirimleriyle etkileşimde bulunamazsa uygulamanın etkin gruba yükseltilmesini tetikleyemezler. 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,
RemoteNotificationFirebase Cloud Messaging (FCM) mesajı aldığında bildirim göstermezse kullanıcı uygulamayla etkileşimde bulunamaz ve bu nedenle uygulamayı etkin grubuna yükseltemez. AslındaRemoteNotification'nin tek kullanım amacı kullanıcıya bildirim göndermek olduğundan bu durumun yaşanmaması gerekir. Bu mesaj türlerinin kullanımıyla ilgili bir politika yaptırımı vardır: Orijinal bildirime geri dönen 20 saniyelik bir yürütme penceresi. Uygulama ön plandaysa veya kullanıcı arka planda çalışmasına izin veriyorsa yaptırım uygulanmaz.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 paketlere atanmış paketlerle test edin.