class MemoryGovernor(private val context: Context) {
private val activityManager = context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
private val memoryInfo = ActivityManager.MemoryInfo()
}
اActivityManager: این ابزارِ خودِ اندروید است که به تو اجازه میدهد با سیستمعامل تعامل داشته باشی و آمار بگیری که در پسزمینه چه خبر است.
اMemoryInfo: یک جعبهٔ خالی است که وقتی آن را به سیستمعامل میدهی، اطلاعات لحظهایِ رم (RAM) گوشی را داخلش پر میکند و به تو برمیگرداند.
. متد اول: تشخیص وضعیت قرمز سیستم (isSystemStressed)
وظیفه این تابع این است که ببیند آیا گوشی در خفقان حافظه قرار دارد یا خیر.
fun isSystemStressed(): Boolean {
activityManager.getMemoryInfo(memoryInfo) // ۱. اطلاعات لحظهای رم را بریز داخل memoryInfo
val availablePercent = memoryInfo.availMem.toDouble() / memoryInfo.totalMem.toDouble() // ۲. محاسبه درصد رم خالی
Log.d("MemoryGovernor", "Available RAM: ...") // ۳. لاگ انداختن برای دباگ
return memoryInfo.lowMemory || availablePercent < 0.15 // ۴. شرط نهایی وضعیت قرمز
}این تابع چطور تصمیم میگیرد؟
این متد به دو چیز حساس است و اگر هرکدام درست باشد، خروجی را true (یعنی سیستم تحت فشار است) برمیگرداند:
اmemoryInfo.lowMemory: خودِ سیستمعامل اندروید یک فلگ دارد که وقتی رم به شدت بحرانی میشود، آن را روشن میکند.
اavailablePercent < 0.15: اگر کمتر از ۱۵٪ از کل رم گوشی خالی باشد، این کد آن را وضعیت قرمز اعلام میکند.
ما از این متد میتونیم برای ایجاد وقفه در پردازش ها استفاده کنیم

