
context در برنامهنویسی اندروید
کسانی که کمی برنامهنویسی اندروید انجام داده باشن میدونن که context در برنامهنویسی اندروید زیاد استفاده میشود. context در برنامهنویسی اندروید مثل یک جعبه ابزار میمونه که توش یک سری ابزارآلات ریخته باشن و توی اون جعبه هم یک توپ کوچک باشه که حکم برنامه شما رو داشته باشه. هر وقت برنامتون به یک ابزار خاصی نیاز داشته باشه یک دست از توی توپ درمیاد یه ابزار برمیداره میبره داخل توپ کارشو انجام میده و دوباره میزارتش بیرون :-). دو نوع context در برنامهنویسی اندروید زیاد استفاده میشوند. یکی application context و دیگری activity context.
بعد از خواندن این مقاله شما میتوانید:
- فرق application context و activity context رو متوجه بشید.
- بدانید که کجا باید از application context استفاده کنید و کجا باید از activity context استفاده کنید.
application context
application context به ازای کل اپلیکیشن یکی ازش وجود داره و اگر توی activity باشید با صدا زدن تابع getApplicationContext میتونید بهش دسترسی پیدا کنید. با این context میتونید به منابع برنامتون مثل رشتهها، عکسها، رنگها و … دسترسی پیدا کنید. فرض کنید شما میخواهید یک کلاس singleton برای برنامتون درست کنید به اسم SettingManager که تنظیمات و کانفیگهای برنامتون رو ذخیره میکند. این کلاس برای ذخیره تنظیمات اپلیکیشن از SharedPreferences استفاده میکند. خب همانطور که میدونید برای ساختن SharedPreferences ها به context نیاز است پس ما باید context رو به کلاس SettingManger پاس بدیم و از آنجایی که میخوایم این کلاس به ازای کل اپلیکیشن یکی ازش وجود داشته باشه application context رو بهش پاس میدیم. به نمونه کد پایین نگاه کنید.
1 2 3 4 5 6 7 8 9 | public class SettingManager { Context mContext; SharedPreferences mSharedPreferences; public SettingManager(Context context) { mContext = context; mSharedPreferences = mContext.getSharedPreferences("myPref",Context.MODE_PRIVATE); } } |
activity context
وقتی توی activity باشید با استفاده از کلمه this به این context دسترسی پیدا میکنید. این context در برنامهنویسی اندروید جاهایی استفاده میشود که نیاز هست حتما یک activity وجود داشته باشد. مثلا برای ساختن دیالوگ به context نیاز هست و شما حتما باید از activity context استفاده کنید چرا که باید یک activity وجود داشته باشه تا روی آن دیالوگ باز بشه در غیر این صورت با خطا مواجه خواهید شد.
به عبارت دیگر وقتی اپلیکیشن شما هیچ اکتیویتی نداشته باشد شما به یک سری از ابزارها دسترسی دارید و وقتی اپلیکیشن شما یک activity داشته باشد که کاربر داره باهاش کار میکنه ابزارهای شما بیشتر میشود چون در این حالت علاوه بر ابزاهایی که application context در اختیارتون قرار میده به ابزارهایی که activity context در اختیارتون قرار میده هم دسترسی دارید.
دوستان عزیز هر سوالی درباره این موضوع دارید یا مشکلاتی که در این زمینه تا حالا بهش برخوریدید رو مطرح کنید. من با توجه به سوالات و مشکلات شما مطالب بیشتری به این مبحث اضافه خواهم کرد. شادکام باشید :-).
منابع [۱]
سلام
با تشکر از مطالب خوبتون . گرچه درک عمیق و پایه ای مفاهیم اندروید برای پیشرفت در مسیر برنامه نویسی کاملا ضروری می باشد ولی برای شخص مبتدی مثل من مهمتر اینست که برنامه ساده ای را که نوشته ام با موفقیت اجرا نموده و برای آموختن مطالب پیشرفته تر تشویق شوم . در عمل مشکلات متعددی از جمله Error هایی در رابطه با دانلود build.gradle ها و sync مجدد برنامه پیش می آید که در هیچکدام از سایت های آموزشی بطور مستقل به آنها نمی پردازند در صورتیکه همین ها باعث اتلاف وقت زیادی می شوند . خواهش می کنم آموزش های مبسوطی در زمینه رفع اینگونه مشکلات در نظر بگیرید.
با تشکر و آرزوی موفقیت شما در تمامی مراحل زندگی
سلام آقا علیرضا
بله من خیلی میشنوم که دوستان از error هایی که gradle موقع کار میده خسته میشن و زمانی که باید برای یادگیری مطالب بزارن و چیزای پیشرفته تر یاد بگیرن صرف سر و کله زدن با gradle میکنن. اگه دقیقا بگید که چه خطایی رو میگیرید میتونم کمکتون کنم مثلا میتونید برام از تب messages تو اندروید استودیو اسکرین شات ایمیل کنید. آدرس ایمیل fahime.s.ghasemi@gmail.com
شما ری اکت نیتیو هم کار کردید
سلام
نه ری اکت نیتیو کار نکردم
سلام بسیار عالی احسنت