Android 11 QPR3 veya sonraki sürümler, önbelleğe alınan uygulamaları dondurma özelliğini destekler. Bu özellik, önbelleğe alınan işlemlerin yürütülmesini durdurur ve önbelleğe alınmış durumdayken çalışmayı deneyebilecek kötü amaçlı uygulamalar tarafından kaynak kullanımını azaltır. Çerçeve, süreçlerini dondurulmuş bir cgroup'e taşıyarak önbelleğe alınmış uygulamaları dondurur. Bu, etkin önbelleğe alınmış uygulamaların bulunduğu durumlarda etkin ve boş CPU tüketimini azaltır. Uygulama dondurucu, bir sistem yapılandırması işareti veya geliştirici seçeneği kullanılarak etkinleştirilebilir.
Uygulama dondurucuyu uygulama
Önbelleğe alınan uygulamaları dondurma aracı, çekirdek cgroup v2 dondurma aracından yararlanır. Uyumlu bir çekirdekle birlikte gönderilen cihazlar bu özelliği (isteğe bağlı olarak) etkinleştirebilir. Bunun için "Önbelleğe alınan uygulamalar için yürütmeyi askıya al" geliştirici seçeneğini etkinleştirin veya cihaz yapılandırma activity_manager_native_boot use_freezer
bayrağını true
olarak ayarlayın. Örnek:
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ündeki veya güncellemesindeki cihaz yapılandırmasını değiştirerek bu ayarı etkinleştirebilir veya devre dışı bırakabilirsiniz.
Uygulama dondurucu, resmi API'leri göstermez (ve referans uygulama istemcisi yoktur) ancak gizli sistem API'leri setProcessFrozen
ve enableFreezer
'ü kullanır. Bu API'ler hakkında ayrıntılı bilgi için ActivityManager'ın Process.java
ve ActivityManagerService API'ye bakın. Geliştiriciler, denemeler için ActivityManager
içindeki müşteri koduna da başvurabilir.
Özel özellikleri kullanma
Genellikle, işlemlerin önbelleğe alındığında herhangi bir işlem yapması beklenmez ancak bazı uygulamalarda, önbelleğe alındığında çalışması beklenen işlemler tarafından desteklenen özel özellikler olabilir. Bu tür 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 çözüm olarak, bir uygulamada önbelleğe alınmış durumdayken etkinlikler gerçekleştirmesi gereken bir işlem varsa uygulamanın etkin kalmasına izin vermek için işlemin herhangi bir işlem yapması gerekmeden önce işlem durumunu önbelleğe alınmamış olarak (ör. Bound ForeGround Service (BFGS) veya ön plan) değiştirin.
Uygulama dondurucuyu test etme
Uygulama dondurucunun amaçlandığı şekilde çalıştığını doğrulamak için aşağıdaki kaynakları kullanın:
adb shell dumpsys activity
Komutunu ve grep forApps frozen:
'i kullanarak dondurulmuş işlemlerin listesini kontrol edin./sys/fs/cgroup/uid_0/cgroup.freeze
dosyasının olup olmadığını kontrol edin.Bir işlem dondurucuya veya dondurucudan her taşındığında dondurulmuş ve dondurulmamış girişleri gösteren logcat'i görüntüleyin. Örnek:
adb logcat | grep -i "\(freezing\|froze\)"