از 27 مارس 2025، توصیه می کنیم از android-latest-release
به جای aosp-main
برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
فریزر برنامه های ذخیره شده
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
Android 11 QPR3 یا بالاتر از فریزر برنامه های ذخیره شده در حافظه پنهان پشتیبانی می کند. این ویژگی اجرای فرآیندهای حافظه پنهان را متوقف میکند و استفاده از منابع را با عملکرد نادرست برنامههایی که ممکن است سعی کنند در حین ذخیرهسازی حافظه پنهان کار کنند، کاهش میدهد. این فریم ورک برنامههای کش را با انتقال فرآیندهای آنها به یک cgroup منجمد میکند. این امر مصرف CPU فعال و بیکار را در حضور برنامه های کش فعال کاهش می دهد. فریزر برنامه را می توان با استفاده از یک پرچم پیکربندی سیستم یا یک گزینه توسعه دهنده فعال کرد.
فریزر برنامه ها را پیاده سازی کنید
فریزر برنامه های ذخیره شده از فریزر هسته cgroup v2 استفاده می کند. دستگاههایی که دارای هسته سازگار هستند میتوانند (اختیاری) آن را فعال کنند. برای انجام این کار، گزینه توسعهدهنده «Suspend execution for cache apps» را فعال کنید یا پیکربندی دستگاه را با flag activity_manager_native_boot use_freezer
روی true
تنظیم کنید. به عنوان مثال:
adb shell device_config put activity_manager_native_boot use_freezer true && adb reboot
هنگامی که flag use_freezer
روی false تنظیم شده باشد یا گزینه developer غیر فعال باشد، فریزر غیرفعال می شود. میتوانید با تغییر پیکربندی دستگاه در نسخه یا بهروزرسانی نرمافزار، این تنظیم را تغییر دهید.
فریزر برنامهها APIهای رسمی را نمایش نمیدهد (و کلاینت پیادهسازی مرجع ندارد)، اما از APIهای مخفی سیستم setProcessFrozen
و enableFreezer
استفاده میکند. برای جزئیات بیشتر در مورد این APIها، به ActivityManager's Process.java
و ActivityManagerService API مراجعه کنید. توسعه دهندگان همچنین می توانند برای آزمایشات به کد مشتری در ActivityManager
مراجعه کنند.
ویژگی های سفارشی را مدیریت کنید
به طور معمول، انتظار نمی رود فرآیندها هنگام ذخیره شدن در حافظه پنهان کاری انجام دهند، اما برخی از برنامه ها ممکن است دارای ویژگی های سفارشی باشند که توسط فرآیندهایی پشتیبانی می شوند که انتظار می رود در حین ذخیره شدن در حافظه پنهان اجرا شوند. وقتی فریزر برنامهها در دستگاهی که چنین برنامهای را اجرا میکند فعال میشود، فرآیندهای حافظه پنهان ثابت میشوند و ممکن است از عملکرد ویژگیهای سفارشی جلوگیری کنند.
به عنوان راهحل، اگر برنامهای فرآیندی دارد که نیاز به انجام فعالیتها در حافظه پنهان دارد، وضعیت فرآیند را به غیر کش (مانند سرویس Bound ForeGround (BFGS) یا پیشزمینه) تغییر دهید، قبل از اینکه فرآیند نیاز به انجام هر کاری داشته باشد تا برنامه فعال بماند.
فریزر اپلیکیشن ها را تست کنید
برای تأیید اینکه فریزر برنامه طبق برنامه کار می کند، از منابع زیر استفاده کنید:
لیستی از فرآیندهای ثابت را با استفاده از دستور adb shell dumpsys activity
و grep برای Apps frozen:
.
وجود فایل /sys/fs/cgroup/uid_0/cgroup.freeze
را بررسی کنید.
مشاهده logcat، که هر بار که یک فرآیند به داخل یا خارج از فریزر مهاجرت می کند، ورودی های منجمد و منجمد نشده را نشان می دهد. به عنوان مثال:
adb logcat | grep -i "\(freezing\|froze\)"
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Cached apps freezer\n\nAndroid 11 QPR3 or higher supports the cached apps\nfreezer. This feature stops execution for cached processes and reduces resource\nusage by misbehaving apps that might attempt to operate while cached. The\nframework freezes cached apps by migrating their processes into a frozen cgroup;\nthis reduces active and idle CPU consumption in presence of active cached apps.\nThe app freezer can be enabled using a system configuration flag or a developer\noption.\n\nImplement the apps freezer\n--------------------------\n\nThe cached apps freezer leverages the kernel cgroup v2 freezer. Devices shipping\nwith a compatible kernel can (optionally) enable it. To do so, enable the\ndeveloper option \"Suspend execution for cached apps\" or set the device config\nflag `activity_manager_native_boot use_freezer` to `true`. For example: \n\n adb shell device_config put activity_manager_native_boot use_freezer true && adb reboot\n\nThe freezer is disabled when the flag `use_freezer` is set to false or the\ndeveloper option is disabled. You can toggle this setting by changing a device\nconfiguration in a software release or update.\n\nThe apps freezer doesn't expose official APIs (and doesn't have a reference\nimplementation client), but does use the hidden system APIs `setProcessFrozen`\nand `enableFreezer`. For details on these APIs, refer to ActivityManager's\n`Process.java` and the ActivityManagerService API. Developers can also refer to\nthe client code in `ActivityManager` for experiments.\n\nHandle custom features\n----------------------\n\nTypically, processes aren't expected to do any work when cached, but some apps\nmight have custom features supported by processes that are expected to run while\ncached. When the apps freezer is enabled on a device running such an app, the\ncached processes are frozen and might prevent custom features from working.\n\nAs a workaround, if an app has a process that needs to perform activities while\ncached, change the process status to non-cached (such as Bound ForeGround\nService (BFGS) or foreground) before the process needs to do any work to allow\nthe app to remain active.\n\nTest the apps freezer\n---------------------\n\nTo verify the app freezer is working as intended, use the following resources:\n\n- Check for a list of frozen processes using the `adb shell dumpsys activity`\n command and grep for `Apps frozen:`.\n\n- Check for the presence of the `/sys/fs/cgroup/uid_0/cgroup.freeze` file.\n\n- View logcat, which shows frozen and unfrozen entries each time a process\n migrates in or out of the freezer. For example:\n\n adb logcat | grep -i \"\\(freezing\\|froze\\)\""]]