Android 11 QPR3 veya üzeri, önbelleğe alınan uygulama dondurucuyu destekler. Bu özellik, önbelleğe alınmış işlemlerin yürütülmesini durdurur ve önbelleğe alınmış durumdayken çalışmayı deneyebilecek uygulamaların hatalı davranışını sağlayarak kaynak kullanımını azaltır. Çerçeve, önbelleğe alınmış uygulamaları, süreçlerini donmuş bir gruba taşıyarak dondurur; bu, etkin önbelleğe alınmış uygulamaların varlığında etkin ve boşta kalan CPU tüketimini azaltır. Uygulama dondurucusu, bir sistem yapılandırma işareti veya bir geliştirici seçeneği kullanılarak etkinleştirilebilir.
Uygulama dondurucusunu uygulayın
Önbelleğe alınmış uygulamalar dondurucusu, çekirdek cgroup v2 dondurucusundan yararlanır. Uyumlu bir çekirdekle gönderilen cihazlar (isteğe bağlı olarak) bunu etkinleştirebilir. Bunu yapmak için, "Önbelleğe alınmış uygulamalar için yürütmeyi askıya al" geliştirici seçeneğini etkinleştirin veya cihaz yapılandırma bayrağını activity_manager_native_boot use_freezer
olarak true
olarak ayarlayın. Örneğin:
adb shell device_config put activity_manager_native_boot use_freezer true && adb reboot
use_freezer
işareti false olarak ayarlandığında veya geliştirici seçeneği devre dışı bırakıldığında dondurucu devre dışı bırakılır. Bir yazılım sürümünde veya güncellemesinde cihaz yapılandırmasını değiştirerek bu ayarı değiştirebilirsiniz.
Uygulama dondurucusu resmi API'leri açığa çıkarmaz (ve bir referans uygulama istemcisine sahip değildir), ancak setProcessFrozen
ve enableFreezer
gizli sistem API'lerini kullanır. Bu API'lere ilişkin ayrıntılar için ActivityManager'ın Process.java
ve ActivityManagerService API'sine bakın. Geliştiriciler ayrıca deneyler için ActivityManager
istemci koduna da başvurabilirler.
Özel özellikleri yönetin
Genellikle süreçlerin önbelleğe alındığında herhangi bir iş yapması beklenmez ancak bazı uygulamalar, önbelleğe alınırken çalışması beklenen işlemler tarafından desteklenen özel özelliklere sahip olabilir. Böyle bir uygulamayı çalıştıran bir cihazda uygulama dondurucu etkinleştirildiğinde, önbelleğe alınan işlemler dondurulur ve özel özelliklerin çalışmasını engelleyebilir.
Geçici bir çözüm olarak, bir uygulamanın önbelleğe alınmış durumdayken etkinlikler gerçekleştirmesi gereken bir işlemi varsa, işlemin uygulamaya izin vermek için herhangi bir iş yapması gerekmeden önce işlem durumunu önbelleğe alınmamış (Bound ForeGround Service (BFGS) veya ön plan gibi) olarak değiştirin. aktif kalmak için.
Uygulama dondurucusunu test edin
Uygulama dondurucunun amaçlandığı gibi çalıştığını doğrulamak için aşağıdaki kaynakları kullanın:
adb shell dumpsys activity
komutunu kullanarak donmuş işlemlerin listesini kontrol edin veFrozen
anahtar sözcüğünü grep edin./sys/fs/cgroup/uid_0/cgroup.freeze
dosyasının varlığını kontrol edin.Bir işlemin dondurucuya her girişinde veya dondurucudan çıkışında dondurulmuş ve dondurulmuş girişleri gösteren logcat'i görüntüleyin. Örneğin:
adb logcat | grep -i "\(freezing\|froze\)"