Önbelleğe alınan uygulamalar dondurucu

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üye kullanım 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. Bunu yapmak için geliştirici seçeneğini "Önbelleğe alınan uygulamalar için yürütmeyi askıya al"ı etkinleştirin veya activity_manager_native_boot use_freezer cihaz yapılandırma işaretini true olarak ayarlayın. Örnek:

adb shell device_config put activity_manager_native_boot use_freezer true && adb reboot

use_freezer işareti yanlış değerine 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'teki istemci koduna da başvurabilir.

Özel özellikleri işleme

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 bir çözüm olarak, bir uygulamanın önbelleğe alınmış hâlde işlem yapması gereken bir işlem varsa uygulamanın etkin kalmasını sağlamak için herhangi bir işlem yapması gerekmeden önce işlem durumunu önbelleğe alınmamış (ör. Bound ForeGround Service (BFGS) veya ön plan) olarak 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 activityKomutunu ve grep for Apps 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\)"