Android 9 (API düzeyi 28) ve sonraki sürümler uygulama bekleme kapları özelliğini destekler. Uygulama Bekletme Paketleri, sistemin ne kadar yakın zamanda ve ne sıklıkta kullanıldığına bağlı olarak uygulamaların kaynak isteklerini önceliklendirmesine yardımcı olur. Uygulama kullanım alışkanlıklarına göre her uygulama, beş öncelikli paketten 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 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.
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 sık kullanılır ancak günlük olarak 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 kullanılmayabileceğini tahmin ettiği için son kullanılan bir uygulama nadir bulunan bir uygulama grubuna eklenebilir.
Etkin
Bir uygulama, kullanılırken, çok yakın zamanda kullanılırken veya aşağıdakilerden herhangi birini yaparken etkin grubuna girer:
- Bir etkinlik başlatır.
- Uzun süredir çalışan bir ön plan hizmeti çalıştırır.
- Kullanıcı bir bildirimden dokunduğunda.
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şim örnekleri 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 kullanıma sunduğu bir sosyal medya uygulaması büyük olasılıkla çalışma grubunda yer alır. Uygulamalar, dolaylı olarak kullanılıyorsa çalışma grubu grubuna da 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 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 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ı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şime geçmediyse. 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 beklemede olan en az bir iş daha olmalıdır (başka herhangi bir işi içerebilir).
- 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'ları olan uygulamalar
- Aşağıdaki izinlerden en az birine sahip olan uygulamalar:
Ö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, 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 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 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ı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 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.