کلاس Context کلاس پایه ی خیلی از کلاسهای دیگه مثل Activity هست.
در SDK اندروید برای انجام برخی از کارها، نیاز هست که از شئ/کلاس Context استفاده کنید، مثل دسترسی به منابع، دسترسی به تنظیمات سیستمی، کار با دیتابیس.
برای اینکه مفهوم Context رو بهتر درک کنید یک مثال میزنم:
فرض کنید یک شرکت چندتا مهندس داره، یکی لر، یکی ترک، یکی کرد، یکی بلوچ، یکی عرب....
اینجا یک مسئول تدارکات داریم که وظیفه ش اینه هرچیزی که مهندس ها برای انجام کارشون نیاز دارن براشون تهیه کنه، و البته هم لری میتونه صحبت کنه هم ترکی هم کردی....
مهندس ها همه میتونن با مسئول تدارکات ارتباط برقرار کنن، اما زبون همدیگه رو نمیفهمن، اینحا مسئول تدارکات این گروه رو به هم مرتبط می کنه.
البته مثال دقیق و کاملی نیست، مهندس ها بخش های مختلف اپلیکیشن شما هستن، وقتی اکتیویتی شما می خواد به یه کلاس دیگه بگه برو برام دیتابیس رو باز کن و اطلاعاتت رو بده، دیتابیس ازش درخواست می کنه که پیغامش رو از طریق (درواقع همراه با) Context بفرسته تا بدونه پیغام از کجا اومده و بتونه با کمک اون کارش رو انجام بده.
این مثال ها هیچکدوم نمیتونن دقیقاً رفتار Context رو شرح بدن، چون برای شرح کامل این کلاس و دلیل اینکه وجود داره، باید SDK اندروید رو بررسی کرد و توضیحش داد.
در مورد Inflater:
وقتی شما در ابتدای اجرای اکتیویتی متد setContentView رو صدا می زنید، این متد فایل XML مربوطه رو پردازش می کنه، به داده هایی تبدیلش می کنه که درنهایت باعث میشه Viewها رسم بشن و id ها به سیستم شناسونده بشن.
بعضی وقتا شما نیاز دارید که یک فایل XML رو برای نمایش آماده کنید (مثلاً تو آداپتور مربوط به ListView تا هر سطر رو شخصی سازی کنید و به شکل دلخواه نمایشش بدید.
Inflate همون کار رو میکنه، فایل XML رو برای سیستم در قالب View ترجمه می کنه تا بشه رسمش کرد و یا سایر عملیاتی که با View انجام میشه روش انجام داد