آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

context چیست؟

محمد  8 سال پیش  7 سال پیش
+2 0

سلام علیکم

(جست و جو کردم منتها چیزی دراین باره پیدا نکردم)

در اموزش ها استاد در اموزش کلاس اکتیویتی

قطعه کدی رو آومزش میدن که کدهاش این هاست

 

  public static Context context;

context = getApplicationContext();

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

استاد میفرمایند ک

این کار باعث میشود تا context فعلی اپلیکیشن در متغیری که تعریف کردیم ذخیره شود

این رو جمله رو متوجه میشم اما این کانتکست رو متوجه نمیشم! این چه هست و چه کاری رو انجام میده

میدونم ک یک کلاسی هست اما کارش در اینجا چیه کانتکست اپلیکیشن چی هست؟

امید وارم منظورم رو متوجه بشید :|

 

 

 

+5 0
با استفاده از کانتکس میشه مشخص کرد که منابع و کد ها برای اجرا زیر نظر چه کسی اجرا بشوند < یکی از مفهوماتش این میتونه باشه < تا زمانی که برنامه روی حافظه دستگاه وجود داره تمام متغیر های Application موجود میباشند < اما در مورد اکتیویتی این چنین نیست و تنها زمانی که onCreate میشوند متغیر ها روی حافظه قرار میگیرند .و با بسته شدن اکتیوتی متغیر ها از حافظه پاک میشوند < بنابر این بهتر هست که هر چیزی رو با کانتکس مربوطه اجرا کنید (8 سال پیش)
+3 0
پیشنهاد میکنم < زیاد به مفهومش گیر ندید < کمی درک کردنش اون اوایل سخت هست < بهتر هست که روش بکار بردنش رو یاد بگیرید < به مرور زمان بهتر درکش میکنید < (8 سال پیش)
0 0
لینک (7 سال پیش)
+1 0
شاید با یک مثال ساده، بتوان مفهوم context را بیان کرد. فرض کنید که شما در یک شهر، غریب هستید و هیچ کجا را نمی شناسید. یک راهنما در کنار شما هست که هر وقت که گیج شدید، از او می پرسید که من کجا هستم و وی با باز کردن یک نقشه، محل شما را می گوید و همچنین می گوید که چگونه می توانید به نقاط مختلف شهر (مثل هتل ها، رستوران ها و ...) بروید. context نیز نقشی مشابه آن راهنما را برای ما دارد که در بخش های مختلف برنامه اندروید، با مراجعه به Context مربوط به آن، context ما را راهنمایی می کند که چگونه به منابع (resources) و کلاس های (classes) مورد نظرمان (از این بخش و یا از سایر بخش های برنامه اندروید)، دسترسی پیدا کنیم. (7 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
HoCoder  8 سال پیش
+4 0

امیدوارم کمکتون کنه واسه درک بهتر ولی هرچی جلوتر برین تو کدنویسی بیشتر متوجه خواهید شد

context مثل یه مفهوم انتزاعی و در اول کمی گیج کننده میمونه پس برنامه نویس ها باید همون اصطلاح context رو بگن تا اینکه بیان اون رو توضیح و تفسیر بدن و من هم کمی توضیح مختصر که بلدم رو میگم

همان طور که از اسمش پیداست context (متن ، مفاد، محتوا ، زمینه=> ترجمه گوگل) شما میتونید (بهتر همون اصطلاح context رو بگم) context فعلی یا وضعیت فعلی app یا object رو بگیرین و به object های که تازه ایجاد شدن بفهمونید که در این app یا activity یا... چه خبر بوده وبه طور معمول میتونید اون رو صدا (call) بزنید و اطلاعاتی بگیرین با توجه به قسمت های دیگر برنامتون مثل (activity, package,application)

زمانی که در activity هستین شما میتونید context فراخوانی بکنید با getApplicationContext(), getContext(), getBaseContext()  , this

استفاده های معمول context:

زمان تعریف یک object مثل views, adapters, listeners:

 TextView tv =newTextView(getContext());
ListAdapter
adapter =newSimpleCursorAdapter(getApplicationContext(),

دسترسی به منابع اشتراکی و سرویس ها مثل LAYOUT_INFLATER_SERVICE, SharedPreferences:

 context.getSystemService(LAYOUT_INFLATER_SERVICE)   
getApplicationContext().getSharedPreferences(*name*,*mode*);

دسترسی به Component های Implicit (ضمنی) مثل  content providers, broadcasts, intent:

 getApplicationContext().getContentResolver().query(uri,...);
پاسخ به سوال 
بهروز  8 سال پیش
+9 0

در تایید گفته دوستمون Crirss..   شما نباید خیلی توی جزئیات ریز بشید و کلنجار برید.باید بتونید بهترین استفاده رو ازش بگیرید.

اصولا تعریف کردن این مفاهیم خیلی سخت هست.  اما برای اینکه یه دیدی داشته باشید از context  سعی ام میکنم یه تعریفی نزدیک بگم. 

context معنی لغویش میشه " زمینه و مفاد و..."    در سمت اندروید هم نزدیک معنی لغویش بکار میره.

در واقع کانتکس یک زمینه ای ایجاد میکنه برای تعامل با بقیه قسمتهای دیگه ای از سیستم اندروید. به طور نادقیق  میشه گفت context   یک فضای ابری گونه ای بوجود میاره ،که داخل این فضا برخی رویکرد ها و منابع و متدها  تعریف شده است ،و بقیه کلاسها برای استفاده از این منابع و متدها باید این فضا رو به ارث ببرند.

حالا بزارید یکم دقیقتر صحبت کنیم. 

وقتی کلاس شما ارث بری میکنه از activity ، اگر داخل مستندات اندروید دنبال کنید میبینید خوده کلاس اکتیوتی ارث بری کرده از CotextTheme  و این کلاس هم از Context  ارث بری میکنه.

پس در واقع شما وقتی از اکتیویتی ارث بری میکنید چون پدر جد اکتیوتی context است. پس  وارد اون فضای ابری گونه شدید و میتونید از متدهایی که فقط در این فضا تعریف شده استفاده کنید.

مثلا یه متدی مثال بزنم . :

برای ساخت دیتابیس یا باز کردن دیتابیس از متد زیر استفاده میکنید در اکتیویتی.

 OpenOronCreateDatabase()....

این متد فقط در فضا  ابری گونه  context  قابل دسترسی هست. و همون طور که در بالا گفتیم  چون پدر جد اکتیویتی context است پس اجازه دسترسی از اون دارید.

اما حالا فکر کنید دیتابیس رو میخواید داخل یک کلاس معمولی باز کنید. وقتی کد زیر رو مینویسید

 OpenOronCreateDatabase()....

از شما خطا میگیره.میگه همچین متدی شناسایی نشد و شما اجازه دسترسی به این متد رو ندارید .دلیلش چیه؟

چون اون فضای ابری گونه رو  این کلاس نداره. 

پس بخاطر همین هست ما توی کلاس به جز اکتیویتی  برای باز کردن دیتابیس .به یک کانتس احتیاج داریم و بعد از گرفتن یک شی از کانتکس  .متد بالا رو به صورت زیر مینویسیم

 my_context.OpenOronCreateDatabase();

پس با توضیحات بالا به طور واضح سوالتون جوابش پیدا شد.

+2 0
وای دمت گرم داداش کلی مطلب خوندم اما نفهمیدم اما این چیزی که شما گفتی رو تا حدودی تونستم درک کنم.عالی بود (8 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .