برنامه‌نویسی اندروید

پروسس ها و چرخه حیاط اپلیکیشن

پروسس ها و چرخه حیاط اپلیکیشن

در اغلب موارد، هر اپلیکیشن اندرویدی در یک پروسس لینوکسی مجزا اجرا می‌شود. این پروسس زمانی ایجاد می‌شود که بخشی از کد برنامه نیاز به اجرا داشته باشد و تا زمانی که دیگر مورد نیاز نباشد، فعال باقی می‌ماند. پس از آن، سیستم برای آزادسازی حافظه، این پروسس را از بین می‌برد.

 

مدیریت طول عمر پروسس در اندروید

یکی از ویژگی‌های مهم اندروید این است که کنترل طول عمر پروسس مستقیماً در اختیار اپلیکیشن نیست. در عوض، سیستم‌عامل بر اساس عوامل زیر تصمیم‌گیری می‌کند:

  • اجزای فعال اپلیکیشن (Activity، Service، BroadcastReceiver)
  • میزان اهمیت آن برای کاربر
  • وضعیت حافظه (RAM) دستگاه

این موضوع باعث می‌شود مدیریت صحیح اجزای اپلیکیشن برای جلوگیری از بسته شدن ناگهانی آن بسیار مهم باشد.

پروسس ها و چرخه حیاط اپلیکیشن

نقش اجزای اپلیکیشن در طول عمر پروسس

اجزای اصلی اندروید که روی طول عمر پروسس تاثیر می‌گذارند:

  • Activity
  • Service
  • BroadcastReceiver

اگر این اجزا به درستی استفاده نشوند، ممکن است پروسس برنامه حتی در زمان انجام یک کار مهم، توسط سیستم متوقف شود.

 

یک خطای رایج در BroadcastReceiver

یکی از مشکلات متداول مربوط به BroadcastReceiver است:

فرض کنید در متد onReceive() یک کار طولانی (مثل اجرای یک Thread) انجام می‌دهید. پس از اتمام متد:

  • سیستم BroadcastReceiver را غیرفعال می‌کند
  • اگر کامپوننت فعال دیگری وجود نداشته باشد، پروسس دیگر ضروری محسوب نمی‌شود
  • در نتیجه، ممکن است سیستم پروسس را terminate کند

راه‌حل چیست؟

بهترین راه استفاده از:

  • JobService
  • یا WorkManager

است تا سیستم متوجه شود که هنوز کاری در حال انجام است.

نحوه مدیریت پروسس‌ها توسط اندروید

اندروید برای مدیریت حافظه، پروسس‌ها را بر اساس سطح اهمیت دسته‌بندی می‌کند. این دسته‌بندی تعیین می‌کند کدام پروسس زودتر از بین برود.

انواع پروسس‌ها در اندروید (بر اساس اولویت)

1. پروسس Foreground (پیش‌زمینه)

این مهم‌ترین نوع پروسس است و شامل حالاتی می‌شود که کاربر مستقیماً با اپلیکیشن در تعامل است:

  • Activity در حالت onResume
  • اجرای متد onReceive() در BroadcastReceiver
  • اجرای متدهای lifecycle سرویس مثل:
    • onCreate()
    • onStart()
    • onDestroy()

🔹 این پروسس‌ها تنها در شرایط بحرانی حافظه از بین می‌روند.

2. پروسس Visible (قابل مشاهده)

در این حالت، کاربر اپلیکیشن را می‌بیند اما با آن تعامل ندارد:

  • Activity در حالت onPause
  • سرویس foreground (startForeground())
  • سرویس‌هایی مثل:
    • Live Wallpaper
    • Input Method

🔹 حذف این پروسس‌ها تاثیر منفی روی تجربه کاربر دارد.

 

3. پروسس Service

این نوع پروسس شامل سرویس‌هایی است که با startService() اجرا شده‌اند:

  • معمولاً در پس‌زمینه کار می‌کنند (مثل دانلود یا آپلود)
  • مستقیماً قابل مشاهده نیستند

🔹 در صورت کمبود حافظه، ممکن است حذف شوند.

⚠️ نکته: سرویس‌های طولانی‌مدت (مثلاً بیش از 30 دقیقه) ممکن است اهمیت خود را از دست بدهند تا از مصرف بیش از حد RAM جلوگیری شود.

4. پروسس Cached (ذخیره‌شده)

این پروسس‌ها دیگر فعال نیستند اما برای افزایش سرعت بازگشت به اپلیکیشن نگه داشته می‌شوند.

  • شامل Activityهای در حالت onStop
  • در لیستی به نام LRU (Least Recently Used) ذخیره می‌شوند

🔹 سیستم در صورت نیاز، قدیمی‌ترین آن‌ها را حذف می‌کند.

5. پروسس Empty (تهی)

  • هیچ کامپوننت فعالی ندارد
  • فقط برای cache نگه داشته شده

🔹 اولین گزینه برای حذف توسط سیستم

الگوریتم LRU در مدیریت حافظه

اندروید از الگوریتم LRU برای مدیریت پروسس‌ها استفاده می‌کند:

  • آخرین برنامه‌هایی که استفاده شده‌اند، نگه داشته می‌شوند
  • قدیمی‌ترین‌ها زودتر حذف می‌شوند

این کار باعث می‌شود:

  • سوییچ بین اپ‌ها سریع‌تر شود
  • مصرف حافظه بهینه بماند

وابستگی بین پروسس‌ها

در برخی موارد، یک پروسس به پروسس دیگر وابسته است. در این حالت:

  • اولویت آن ممکن است افزایش یابد
  • سیستم برای جلوگیری از اختلال، آن را حفظ می‌کند

 

جدول اولویت پروسس‌ها در اندروید

وضعیت پروسس توضیح اولویت
Foreground تعامل مستقیم کاربر با Activity یا اجرای lifecycle 1
Visible قابل مشاهده ولی بدون تعامل 2
Service اجرای سرویس در پس‌زمینه 3
Cached Activityهای متوقف‌شده (LRU) 4
Empty بدون کامپوننت فعال 5

 

جمع‌بندی

مدیریت صحیح چرخه حیات پروسس در اندروید نقش بسیار مهمی در:

  • بهینه‌سازی مصرف حافظه
  • جلوگیری از کرش شدن اپلیکیشن
  • بهبود تجربه کاربری

دارد.

اگر به عنوان توسعه‌دهنده بتوانید رفتار سیستم را درک کنید، می‌توانید اپلیکیشن‌هایی پایدارتر و حرفه‌ای‌تر بسازید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *