Aplikasi Cache Freezer

Android 11 QPR3 atau lebih tinggi mendukung freezer aplikasi yang di-cache. Fitur ini menghentikan eksekusi untuk proses yang di-cache dan mengurangi penggunaan sumber daya oleh aplikasi yang berperilaku tidak semestinya yang mungkin mencoba beroperasi saat di-cache. Kerangka kerja membekukan aplikasi yang di-cache dengan memigrasikan prosesnya ke dalam cgroup yang dibekukan; ini mengurangi konsumsi CPU aktif dan idle di hadapan aplikasi cache yang aktif. Freezer aplikasi dapat diaktifkan menggunakan tanda konfigurasi sistem atau opsi pengembang.

Menerapkan freezer aplikasi

Freezer aplikasi yang di-cache memanfaatkan freezer kernel cgroup v2. Perangkat yang dikirimkan dengan kernel yang kompatibel dapat (secara opsional) mengaktifkannya. Untuk melakukannya, aktifkan opsi pengembang "Tangguhkan eksekusi untuk aplikasi yang di-cache" atau setel flag config perangkat activity_manager_native_boot use_freezer ke true . Sebagai contoh:

adb shell device_config put activity_manager_native_boot use_freezer true && adb reboot

Freezer dinonaktifkan ketika flag use_freezer disetel ke false atau opsi pengembang dinonaktifkan. Anda dapat mengaktifkan setelan ini dengan mengubah konfigurasi perangkat dalam rilis atau pembaruan perangkat lunak.

Pembeku aplikasi tidak mengekspos API resmi (dan tidak memiliki klien implementasi referensi), tetapi menggunakan API sistem tersembunyi setProcessFrozen dan enableFreezer . Untuk detail tentang API ini, lihat Process.java ActivityManager dan API ActivityManagerService. Pengembang juga dapat merujuk ke kode klien di ActivityManager untuk eksperimen.

Menangani fitur khusus

Biasanya, proses tidak diharapkan untuk melakukan pekerjaan apa pun saat di-cache, tetapi beberapa aplikasi mungkin memiliki fitur khusus yang didukung oleh proses yang diharapkan berjalan saat di-cache. Saat freezer aplikasi diaktifkan pada perangkat yang menjalankan aplikasi semacam itu, proses yang di-cache dibekukan dan mungkin mencegah fitur kustom bekerja.

Sebagai solusinya, jika aplikasi memiliki proses yang perlu melakukan aktivitas saat di-cache, ubah status proses menjadi non-cache (seperti Bound ForeGround Service (BFGS) atau latar depan) sebelum proses perlu melakukan pekerjaan apa pun untuk mengizinkan aplikasi untuk tetap aktif.

Menguji freezer aplikasi

Untuk memverifikasi freezer aplikasi berfungsi sebagaimana mestinya, gunakan sumber daya berikut:

  • Periksa daftar proses yang di-cache di /dev/freezer/frozen/cgroup.procs .

  • Periksa keberadaan file /sys/fs/cgroup/uid_0/cgroup.freeze .

  • Lihat logcat, yang menunjukkan entri yang dibekukan/dibekukan setiap kali suatu proses bermigrasi masuk atau keluar dari freezer. Sebagai contoh:

    adb logcat | grep -i "\(freeze\|froze\)"