מקפיא אפליקציות בקובץ שמור

אנדרואיד 11 QPR3 ומעלה תומך במקפיא האפליקציות המאוחסנות במטמון. תכונה זו מפסיקה את הביצוע של תהליכים מאוחסנים במטמון ומצמצמת את השימוש במשאבים על ידי התנהגות לא נכונה של אפליקציות שעלולות לנסות לפעול תוך כדי שמירה במטמון. המסגרת מקפיאה אפליקציות מאוחסנות במטמון על ידי העברת התהליכים שלהן לקבוצת cgroup קפואה; זה מפחית את צריכת המעבד הפעילה והבלתי פעילה בנוכחות אפליקציות מאוחסנות במטמון פעילות. ניתן להפעיל את מקפיא האפליקציות באמצעות דגל תצורת מערכת או אפשרות מפתחים.

יישם את מקפיא האפליקציות

מקפיא האפליקציות המאוחסנות במטמון ממנף את מקפיא cgroup v2 של הליבה. מכשירים המשלוחים עם ליבה תואמת יכולים (אופציונלי) לאפשר זאת. כדי לעשות זאת, הפעל את אפשרות המפתח "השעיית ביצוע עבור אפליקציות שמורות במטמון" או הגדר את דגל תצורת המכשיר activity_manager_native_boot use_freezer ל- true . לדוגמה:

adb shell device_config put activity_manager_native_boot use_freezer true && adb reboot

המקפיא מושבת כאשר הדגל use_freezer מוגדר כ-false או אפשרות המפתחים מושבתת. אתה יכול להחליף הגדרה זו על ידי שינוי תצורת מכשיר במהדורת תוכנה או עדכון.

מקפיא האפליקציות אינו חושף ממשקי API רשמיים (ואין לו לקוח יישום ייחוס), אך כן משתמש בממשקי API של המערכת הנסתרים setProcessFrozen ו- enableFreezer . לפרטים על ממשקי API אלה, עיין ב- Process.java של ActivityManager וב-ActivityManagerService API. מפתחים יכולים גם להתייחס לקוד הלקוח ב- ActivityManager לניסויים.

טפל בתכונות מותאמות אישית

בדרך כלל, תהליכים לא צפויים לעשות כל עבודה כשהם מאוחסנים במטמון, אבל לאפליקציות מסוימות עשויות להיות תכונות מותאמות אישית הנתמכות על ידי תהליכים שצפויים לפעול בזמן שמור. כאשר מקפיא האפליקציות מופעל במכשיר שמריץ אפליקציה כזו, התהליכים השמורים במטמון מוקפאים ועשויים למנוע מתכונות מותאמות אישית לפעול.

כדרך לעקיפת הבעיה, אם לאפליקציה יש תהליך שצריך לבצע פעילויות תוך כדי שמירה במטמון, שנה את סטטוס התהליך למצב לא שמור (כגון Bound ForeGround Service (BFGS) או חזית) לפני שהתהליך יצטרך לבצע עבודה כלשהי כדי לאפשר את האפליקציה להישאר פעיל.

בדוק את מקפיא האפליקציות

כדי לוודא שהמקפיא של האפליקציה פועל כמתוכנן, השתמש במשאבים הבאים:

  • בדוק אם יש רשימה של תהליכים קפואים באמצעות פקודת adb shell dumpsys activity ו-grep את מילת המפתח Frozen .

  • בדוק את נוכחותו של הקובץ /sys/fs/cgroup/uid_0/cgroup.freeze .

  • צפה ב-logcat, המציג ערכים קפואים ולא קפואים בכל פעם שתהליך נודד לתוך המקפיא או החוצה ממנו. לדוגמה:

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