Pembeku aplikasi dalam cache

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 kunci Frozen .

  • 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\)"