Droid Hub✨: post #161 — TG.ME

Droid Hub✨خب ما تا این جا تونستیم یه ارتباط دو طرفه با سیستم عامل برقرار کنیم تا بتونیم از پردازنده مطابق نیازمون بهینه استفاده کنیم. اما همه چیز به cpu ختم نمیشه پردازش های ما داره مموری رو هم تحت استرس میگذاره پس باید با مموری هم جوری رفتار کنیم تا سیستم عامل اپمون…
اگر رام (RAM) گوشی کاربر پر باشد، اندروید بدون تعارف اپلیکیشن را می‌بندد (Crash). این کد وظیفه‌اش این است که قبل از انجام کارهای سنگین، وضعیت جیبِ حافظهٔ گوشی را بسنجد و بر اساس آن تصمیم بگیرد.


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: اگر کمتر از ۱۵٪ از کل رم گوشی خالی باشد، این کد آن را وضعیت قرمز اعلام می‌کند.

ما از این متد میتونیم برای ایجاد وقفه در پردازش ها استفاده کنیم
👍1🌭1
June 30, 2026 160 2