Önbelleğe alınmış uygulamalar dondurucu

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 ve Frozen 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\)"