Android 11 QPR3 atau lebih tinggi mendukung freezer aplikasi cache. Fitur ini menghentikan eksekusi untuk proses yang di-cache dan mengurangi penggunaan sumber daya dengan melakukan kesalahan pada aplikasi yang mungkin mencoba beroperasi saat di-cache. Kerangka kerja ini membekukan aplikasi yang di-cache dengan memigrasikan prosesnya ke dalam cgroup yang dibekukan; ini mengurangi konsumsi CPU yang aktif dan menganggur dengan adanya aplikasi cache yang aktif. Pembekuan aplikasi dapat diaktifkan menggunakan tanda konfigurasi sistem atau opsi pengembang.
Terapkan freezer aplikasi
Freezer aplikasi yang di-cache memanfaatkan freezer kernel cgroup v2. Perangkat yang dikirimkan dengan kernel yang kompatibel dapat (opsional) mengaktifkannya. Untuk melakukannya, aktifkan opsi pengembang "Tunda eksekusi untuk aplikasi yang di-cache" atau setel tanda konfigurasi perangkat activity_manager_native_boot use_freezer
ke true
. Misalnya:
adb shell device_config put activity_manager_native_boot use_freezer true && adb reboot
Freezer dinonaktifkan ketika tanda use_freezer
disetel ke false atau opsi pengembang dinonaktifkan. Anda dapat mengubah pengaturan ini dengan mengubah konfigurasi perangkat dalam rilis atau pembaruan perangkat lunak.
Apps freezer 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.
Tangani fitur khusus
Biasanya, proses tidak diharapkan melakukan pekerjaan apa pun saat di-cache, namun 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 tersebut, proses cache akan terhenti dan mungkin mencegah fitur khusus berfungsi.
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.
Uji freezer aplikasi
Untuk memverifikasi bahwa freezer aplikasi berfungsi sebagaimana mestinya, gunakan sumber daya berikut:
Periksa daftar proses yang dibekukan menggunakan perintah
adb shell dumpsys activity
dan ambil kata kunciFrozen
.Periksa keberadaan file
/sys/fs/cgroup/uid_0/cgroup.freeze
.Lihat logcat, yang menampilkan entri yang dibekukan dan tidak dibekukan setiap kali suatu proses bermigrasi masuk atau keluar dari freezer. Misalnya:
adb logcat | grep -i "\(freezing\|froze\)"