Sistem, uygulamaların kaynak isteklerine cihaz durumuna, uygulama durumuna ve uygulamanın bekleme grubuna göre öncelik verir.
Android sistemi, kaynak sınırlarını iki farklı şekilde uygulayabilir. Kaynak kullanımını optimize etmenin bir yolu, cihaz uyku modu gibi düşük güç modundan çıkana kadar işin yürütülmesini ertelemek olacaktır. Örneğin, normal işler ve tam olmayan alarmlar, cihaz uyku modundan çıktıktan sonra yürütülmeleri için ertelenebilir.
Diğer bir yöntem de uygulamanın mevcut bekleme grubuna göre cihazı ne kadar uyandırıp iş yapabileceğini azaltmaktır. Sistem hem sıklığı (uygulamanın cihazı ne sıklıkta uyandırdığını) hem de toplam süreyi (cihazın açık kaldığı süre) azaltabilir. Örneğin, uygulama nadir bekleme grubundaysa 24 saatlik bir süre içinde planlanmış işleri toplam 10 dakika boyunca çalıştırabilir.
WorkManager'ın, uygulama görünmediğinde ve çalışanlar iş kaynağı sınırlarından etkilendiğinde görevleri planlamak için JobScheduler'ı kullandığını unutmayın.
Aşağıdakileri okuyarak kısıtlamaları daha iyi anlayabilirsiniz:
- Cihaz durumuna göre kaynak sınırları
- Uygulama durumuna dayalı kaynak sınırları
- Uygulama bekleme grubuna dayalı kaynak sınırları
Cihaz durumunun ve uygulama durumunun, uygulamayı beklemeye alma paketi sınırlarını geçersiz kılabileceğini unutmayın. Örneğin, cihaz şarj oluyorsa sistem, nadir bekleme grubundaki uygulamaların 24 saatlik bir süre içinde 10 dakikadan uzun süre boyunca iş yürütmesine izin verir.
Kaynak sınırlarını da etkileyen davranış değişiklikleri oldu. Daha fazla bilgi için Kaynak sınırlarını etkileyen Android davranışı değişiklikleri başlıklı makaleyi inceleyin.
Cihaz durumuna göre kaynak sınırları
Sistem, cihaz durumuna bağlı olarak kaynak sınırlarından muaf tutabilir veya bu sınırlamaları uygulayabilir. Örneğin, şarj ediliyor durumundaki bir cihaza, uygulama bekleme grubuna bakılmaksızın sınırsız kaynak erişimi verilir.
Cihaz durumu |
Kariyer |
Alarmlar |
Ağ erişimi |
Firebase Cloud Messaging |
Şarj |
Kısıtlanmış bekleme paketi dışında yürütme sınırı yoktur. |
Kullanıcı uygulama pilini manuel olarak kısıtlamadığı sürece tüm bekleme kapları ve işlem durumları için yürütme sınırı yoktur |
Kısıtlama yok |
Kısıtlama yok |
Ekran açık |
Yürütme sınırları, bekleme havuzuna göre uygulanır |
Yürütme sınırları, uygulama işlemine ve bekleme grubuna göre uygulanır |
Erişim, bekleme havuzuna veya uygulama işlemi durumuna bağlıdır |
Kısıtlama yok |
Ekran kapalı ve Uyku modu etkin |
Yürütme sınırları, bekleme grubuna göre uygulanır ve yürütme, bekleme modu bakım aralığına ertelenir |
Yürütme sınırları, bekleme paketine göre uygulanır. Normal alarmlar: Uyku modu bakım dönemine ertelendi Boştayken alarmlar: Saat başına 7 ile sınırlıdır |
Uyku modunda kısıtlanır |
Yüksek öncelik: Yürütme sınırı yok Normal öncelik: Uyku modu bakım dönemine ertelendi |
Uygulama durumuna göre kaynak sınırlamaları
Sistemin, uygulama bekleme havuzunun kaynak sınırlarını zorunlu tutup tutmayacağı uygulama işleminin önemine bağlıdır. İşlem öneminin farklı düzeylerini anlamak için ActivityManager.RunningAppProcessInfo.importance
bölümüne göz atın.
Cihaz kullanıcısı, uygulama güç yönetimi optimizasyonlarını manuel olarak geçersiz kılmayı da seçebilir. Bu durumda, uygulama bekleme grubu sınırları geçersiz kılınır.
Uygulama durumu |
Kariyer |
Alarmlar |
Ağ |
Uygulama işlemi görünür durumda veya ön planda |
Yürütme sınırlaması yoktur |
Sıklık sınırlaması yoktur |
Kısıtlama yok |
Uygulama işlemi bir ön plan hizmeti çalıştırıyor |
Yürütme sınırları, bekleme havuzuna göre uygulanır*** |
Sıklık sınırları, bekleme grubuna göre uygulanır |
Kısıtlama yok |
Kullanıcı, uygulamanın pil kullanımını manuel olarak kısıtlıyor |
Yürütme kısıtlanır. |
Yürütme kısıtlanır. |
Erişim, beklemedeki paket davranışına bağlıdır |
Kullanıcı, uygulamanın pil kullanımına yönelik kısıtlamayı manuel olarak kaldırır. |
Yürütme sınırı geniş*** |
Yürütme sınırlaması yoktur |
Cihaz Veri Tasarrufu modunda olmadığı sürece sınırsız |
*** Android 16'da işlerin yürütme kotası davranışı değişti. Android 16'dan önce, uygulama bir ön plan hizmeti çalıştırırken veya kullanıcı uygulamanın pilini sınırsız hale getirdiğinde yürütme sınırı yoktu.
Uygulama bekleme paketine göre kaynak sınırları
Not: Diğer cihaz koşulları veya paket değişiklikleri kaynak kısıtlamalarını etkileyebileceğinden, bu tablodaki değerler yürütme süreleri için garanti değildir. Değerler, gelecekteki Android sürümlerinde de değişebilir.
Normal işler, hızlandırılmış işler, alarmlar ve ağ erişimi, uygulama bekleme paketine göre sınırlanabilir. Bu yaklaşık güç yönetimi sınırlarını referans olarak kullanarak uygulama bekleme gruplarının uygulamanızı nasıl etkilediğini anlayın. En iyi performans için uygulama bekleme en iyi uygulamalarına uyun ve görev planlama API'leri için pil kullanımını optimize edin.
Android 13'ten itibaren, uygulamanın bekleme havuzu artık bir uygulamanın kaç yüksek öncelikli FCM kullanabileceğini belirlemez.
Uygulamayı beklemeye alma grubu |
Normal işler* |
Yüksek öncelikli işler** |
Alarmlar |
Ağ |
Etkin: |
60 dakikalık bir dönemde en fazla 20 dakika*** |
24 saatlik bir dönemde en fazla 30 dakika*** |
Yürütme sınırlaması yoktur |
Kısıtlama yok |
Çalışma seti: |
4 saatlik bir süre içinde en fazla 10 dakika |
24 saatlik hareketli bir dönemde en fazla 15 dakika |
Saatte en fazla 10 |
Kısıtlama yok |
Sık: |
12 saatlik bir süre içinde en fazla 10 dakika |
24 saatlik hareketli bir dönemde en fazla 10 dakika |
Saatte en fazla 2 |
Kısıtlama yok |
Nadir: |
24 saatlik hareketli bir dönemde en fazla 10 dakika |
24 saatlik hareketli bir dönemde en fazla 10 dakika |
Saatte 1 ile sınırlıdır |
Devre dışı |
Kısıtlanmış: |
Günde bir kez, en fazla 10 dakika |
24 saatlik bir aralıkta en fazla 5 dakika |
Günde bir alarm (tam alarm veya yaklaşık alarm) |
Devre dışı |
* Normal işler, JobScheduler'da setUserInitiated(true)
veya setExpedited(true)
işaretlerini ya da WorkManager'da hızlandırılmış çalışanları kullanmayan işleri ifade eder.
** Hızlandırılmış işlerin ayrı bir yürütme sınırı vardır. Hızlandırılmış sınırlar tükendiğinde normal iş yürütme sınırlarını kullanarak çalışmaya devam etmeleri için WorkManager'da yapılandırılabilirler.
*** Android 16'da işlerin yürütme kotası davranışı değişti. Android 16'dan önce, uygulama etkin bekleme grubundayken yürütme sınırı yoktu.
Kaynak sınırlarını etkileyen Android davranış değişiklikleri
Aşağıdaki Android güncellemelerinde uygulama kaynak sınırlarında değişiklikler yapıldı.
Android 16
JobScheduler kota optimizasyonları davranışında değişiklik
Android, normal ve hızlandırılmış iş yürütme çalışma zamanı kotasını aşağıdaki faktörlere göre ayarladı:
- Uygulamanın hangi uygulama bekleme havuzunda olduğu
- Uygulama üst durumdayken iş yürütülmeye başlarsa
- İş, bir ön plan hizmeti çalışırken yürütülüyorsa
Android 13
Yüksek Öncelikli Firebase Cloud Message (FCM) Kotaları davranışında değişiklik
- Uygulama Bekleme Havuzları artık bir uygulamanın kaç tane yüksek öncelikli FCM kullanabileceğini belirlemez.
- Sistem artık, bildirim oluşturmayan yüksek öncelikli mesajlar sürekli olarak gönderen bir uygulama algılarsa yüksek öncelikli mesajların önceliğini düşürüyor.
- Yüksek öncelikli mesajlarla ilgili güncel kurallar için mesaj önceliğini ayarlama ve yönetmeyle ilgili firebase belgelerine bakın.
Android 9
Uygulamayı Beklemeye Alma Grupları özelliği kullanıma sunuldu
Android 9, Uygulama Bekleme Grupları adlı yeni bir pil yönetimi özelliğini kullanıma sunuyor. Uygulama Bekleme Havuzları, sistemin uygulamaların kaynak isteklerine öncelik vermesine yardımcı olur. Bu önceliklendirme, uygulamaların ne kadar süre önce ve ne sıklıkta kullanıldığına göre yapılır. Uygulama kullanım kalıplarına göre her uygulama beş öncelik grubundan birine yerleştirilir. Sistem, her uygulamanın kullanabileceği cihaz kaynaklarını uygulamanın bulunduğu pakete göre sınırlar.