context چیست و چه نقشی در برنامه دارد ؟

در این بار می خواهیم به context چیست و چه نقشی در برنامه دارد ؟ بپردازیم و درک کنیم چه استفاده ای در برنامه دارد.
ما می توانیم با فراخوانی getApplicationContext(), getContext(), getBaseContext() یا استفاده از this (زمانی که کلاس ما از context گسترش داده شده باشد) و در بخش های مختلفی همانند Application, Activity, Service و IntentService classes استفاده کنیم. در اخر این می شود ساده ترین تعریف از context اما ما در زیر به تفسیر context را توضیح می دهیم.
Context به عنوان کلاس پایه (base class) برای Activity ها، سرویس ها (service)، کل برنامه اندروید (Application) و … به کار رفته است. در واقع آنها از گسترش (extend) کلاس Context به وجود آمده اند و بنابراین در برخی مواقع که در حال کدنویسی برای بخش های مختلف برنامه اندروید هستیم، باید به context مربوط به آنها رجوع کنیم. مثلا در هنگام کدنویسی در یک Activity ، ممکن است که برای یک سری کد، نیاز به context مربوط به خود Activity داشته باشیم و برای یک سری کد دیگر، نیاز به context مربوط به کل برنامه اندروید (Application) باشد. بنابراین رجوع به context مربوط به آنها، برای برخی کدها، ضروری است.
context مربوط به هر کدام از مواردی که ذکر کردیم، اطلاعات محیطی (environment data) مربوط به آنها را ارائه می کند. Context به ما کمک می کند که به منابع (resources) و کلاس ها (classes) و برخی موارد دیگر از آنها، دسترسی پیدا کنیم.
شاید با یک مثال ساده، بتوان مفهوم context را بیان کرد. فرض کنید که شما در یک شهر، غریب هستید و هیچ کجا را نمی شناسید. یک راهنما در کنار شما هست که هر وقت که گیج شدید، از او می پرسید که من کجا هستم و وی با باز کردن یک نقشه، محل شما را می گوید و همچنین می گوید که چگونه می توانید به نقاط مختلف شهر (مثل هتل ها، رستوران ها و …) بروید. context نیز نقشی مشابه آن راهنما را برای ما دارد که در بخش های مختلف برنامه اندروید، با مراجعه به Context مربوط به آن، context ما را راهنمایی می کند که چگونه به منابع (resources) و کلاس های (classes) مورد نظرمان (از این بخش و یا از سایر بخش های برنامه اندروید)، دسترسی پیدا کنیم.
اگر بخواهیم یک مثال ساده از context بنویسیم می توانیم به ایجاد یک Toast با استفاده از context بپردازیم.

یک نمونه ساده از استفاده از context ولی بیشترین کاربرد context در بخش service هاست که در آن جا ما دیگر this و متد های این چنینی نداریم و فقط باید از Context استفاده کنیم.
در انتها، شاید بد نباشد که کدهای کلاس Context را ببینید این بخش به بخش جاوا مرتبط است و کاربر نباید آن را ویرایش کند اگر می خواهید خودتان در اندروید استدیو به آن کلاس بروید با نگه داشتن CTRL روی Context کلیک کنید.
در آینده به استفاده صحیح از context می پردازیم زیرا استفاده نادرست از Context سبب memory leak (حدر رفتن حافظه ) می شود  در کل سبب کندی اپلیکیشن شما در گوشی کاربر می شود.
 
این مقاله هم به اتمام رسید انشاالله مفید بوده باشد.

مطالعه بیشتر