Lifecycle یک برنامه در اندروید

در اندروید برنامه ها در پروسس لینوکسی مجزا و مخصوص به خود اجرا می شوند.نکته مهم این هست که Lifecycle یک برنامه در اندروید توسط برنامه نویس به صورت مستقیم مدیریت نمی شود بلکه خود سیستم اندروید آن را مدیریت می کند.ولی استفاده از component iهای مختلف در اندروید روی این چرخه اثر می گذارند.

سیستم عامل اندروید زمانی که نیاز به منابع بیشتر مثل RAM باشد یک برنامه را kill می کند.البته این کار را به وسیله مکانیزیمی انجام می دهد که در زیر توضیح داده شده است:

  • زمانیکه یک برنامه در حال اجرا باشد(foreground process) آن برنامه را تا جای ممکن kill نمی کند.سیستم اندروید برنامه را در حالات زیر در حال اجرا فرض می کند:
    • یک Activity (+ +) روی صفحه در حال اجرا باشد(وضعیت آن Resumed باشد)
    • یک BroadcastReceiver در حال اجرا باشد.(متد onReceive() آن صدا زده شده باشد)
    • یک Service در حال اجرا باشد.(در حال اجرای یکی از متد های Service.onCreate(), Service.onStart(), یا Service.onDestroy())
  • زمانیکه  یک برنامه قابل رویت(visible process) داشته باشیم.در این حالت سیستم عامل اندروید تا جای ممکن برنامه را kill نمی کند.در حالات زیر برنامه قابل رویت فرض می شود
    • یک Activity روی صفحه در وضعیت paused قرار دارد.مثلا یک دیالوگ روی صفحه باشد.
    • یک سرویس به صورت foreground service اجرا شده باشد.
    • سرویس هایی مثل live wallpaper در حال استفاده باشند.
  • service process که به وسیله متد startService() اجرا می شوند. این دسته از سرویس ها مستتقیم قابل رویت نیستند ولی کارهایی از قبلی دانلود و … انجام می دهد که ممکن است برای کاربر مهم باشد.از این رو سیستم اندروید سعی می کند تا جای ممکن این پروسس ها را از بین نبرد.توجه داشته باشید که سرویسهایی که زمان اجرای طولانی داشته باشند مثلا بیشتر از ۳۰ دقیقه به منظوری جلوگیری از memory leak آن ها را به cached processes انتقال می دهد.
  • cached process پروسس هایی هستند که هم اکنون در حال استفاده و اجرا نمی باشند.سیستم اندروید در حالت عادی ممکن است دارای چندین cached process باشد و در زمانی که نیاز به رم داشت از قدیمی ترین پروسس شروع به kill کردن می کند.زمانهای کمی پیش می آید که نیاز باشد تمام پروسس های کش شده را kill کند.همچنین در صورتیکه یک پروسس را kill کند Lifecycle مهم یک activity را اجرا می کند.این کار باعث می شود در صورتیکه یکبار دیگر به آن برنامه نیاز شد برنامه در یک پروسس جدید با همان وضعیت قبلی اجرا شود.

پاسخ دهید

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